hibernate初入门3--hibernate的简易实现

对hibernate的几天学习大概了解了hibernate的工作原理,本着作为程序员的严谨(为了记忆而已),在此就重现hibernate简易实现的全过程!!

首先,我们知道hibernate是符合ORM对象关系映射的!!所以我们从测试类出发,默认简易的hibernate已实现;

代码如下

 1 package com.hibernate.Exp150705;
 2
 3 import org.junit.Test;
 4
 5 public class TestDemo {
 6
 7
 8     @Test
 9     public void test() throws Exception{
10
11         Children child = new Children();
12         child.setId(1);
13         child.setName("小元");
14         child.setHeight(176);
15         //基于hibernate的工作原理,自己创建一个MySession,用于完成实体类到数据库的映射
16         MySession  ms = new MySession();
17         //创建的Mysession 具有save方法完成映射;
18         ms.save(child);
19     }
20
21 }

实体类children类也已经实现,代码如下:

 1 package com.hibernate.Exp150705;
 2
 3 public class Children {
 4
 5     private int id;
 6     private String name;
 7     private int height;
 8
 9
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     public int getHeight() {
23         return height;
24     }
25     public void setHeight(int height) {
26         this.height = height;
27     }
28
29
30 }

hibernate的简易实现类 MySession ,代码如下

 1 package com.hibernate.Exp150705;
 2
 3 import java.lang.reflect.Method;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.PreparedStatement;
 7 import java.util.HashMap;
 8 import java.util.Map;
 9
10
11 public class MySession {
12
13     private String  table = "children";  //表示需要插入数据的表
14     Map<String,String>  map = new HashMap<String,String>();//用于保存表列名与实体类属性 (列名,类属性)
15     String [] mn;//children类方法名
16
17     public MySession(){
18
19         map.put("id", "id");
20         map.put("name", "name");
21         map.put("height", "height");
22
23         mn = new String[map.size()];
24     }
25
26     public void save(Children child) throws Exception {
27         // TODO Auto-generated method stub
28         String sql = createSql(table);//创建插入语句
29         System.out.println(sql);
30         Class.forName("com.mysql.jdbc.Driver");
31         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/hibernate","root","TAN19911104");
32         PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
33         for(int i = 0 ; i < mn.length ; i++){
34
35             Method method = child.getClass().getMethod(mn[i]); //利用反射机制获取children类中的指定名称的方法
36             String returnTypeName = method.getReturnType().getName();//获取该方法的返回值
37
38             if(returnTypeName.equals("java.lang.String")){
39
40                 String returnValue = (String) method.invoke(child); //获取返回值
41                 ps.setString(i+1, returnValue);
42
43             }
44
45             if(returnTypeName.equals("int")){
46                 Integer returnValue = (Integer)method.invoke(child);
47                 ps.setInt(i+1, returnValue);
48             }
49
50         }
51
52         ps.executeUpdate();
53         ps.close();
54
55     }
56
57     private String createSql(String table) {
58         // TODO Auto-generated method stub
59         String str1 = "";
60         int index = 0;
61         for(String m : map.keySet()){//获取方法名并以getId()形式存入mn数组中
62
63             mn[index] = "get"+ Character.toUpperCase(m.charAt(0)) + m.substring(1);
64             str1 += m+",";
65             index++;
66         }
67         str1 = str1.substring(0, str1.length()-1);
68
69         String str2 = "";
70         for(int i=0 ; i<map.size() ; i++){   //map.size() 即等于表属性个数
71             str2+="?,";
72         }
73         str2 = str2.substring(0, str2.length()-1); //去掉末尾逗号
74
75         String sql = "insert into "+table +"( " + str1 +" ) values ( " +str2 +" )";//insert into table (id,name....) values (?,?,?....)格式类型
76         System.out.println(sql);
77         return sql;
78
79     }
80
81 }
时间: 2024-08-10 23:12:46

hibernate初入门3--hibernate的简易实现的相关文章

hibernate初入门2--Annotation

零基础接触hibernate,在学习的过程中接触到了Annotation(翻译过来“注释”).在学习过程中, 并不知道annotation怎么发展来的,但通过对比操作,发现了Annotation在编码中简化了对映射文件的编写(虽然很大程度上是copy过来的)!!话不多上,直接将编码过程贴上(菜鸟,写不出高大上的东西,此乃无奈之举)!! 创建数据库 创建实体类Teacher.java 1 package com.hibernate.Exp150704; 2 3 import javax.persi

Hibernate初入门1

刚开始接触hibernate,顿时对ORM(对象关系映射 Object Relational Mapping )有了几分崇拜之情,但心也是够累的!!不说太多,直接贴图!! 看到这里,内心也是崩溃的!!一万只尼玛奔过,过时的方法不能用(能力问题,没看懂异常)?!!! 通过千百次的测试,尼玛,网上的资料也太不负责了!!直接copy的hibernate.cfg.xml竟然是错的!!这尼玛<hibernate-configuration>标签也害的我挣扎了那么久!! 1 <?xml versio

Hibernate初入门4--hbm2ddl

在hibernate的配置文件中,存在如下一段代码!! 1 <!-- Drop and re-create the database schema on startup --> 2 <property name="hbm2ddl.auto">create/create-drop/update/validate</property> 在学习当中,完全不知道其中属性标签的值所代表的含义!!标签值有如下四种: (1)create (2)create-dro

Hibernate快速入门基础部分(一)

简介 学习Java有一段时间了,一直在忙碌着学习,每天大量的新知识和新技术来不及消化,第二天又接着学习.有想法有时会想一下,大部分作为学习者角色完成这段时间的学习.反正最终不忘记自己的初心和学习的意义.好啦~不闲扯了,今天小Hi入门,主要学习持久化对象概述.映射对象标识符.和如何操纵持久化对象 Hibernate简介 1.Hibernate是处于开发中的持久层框架,他是一个ORM映射工具(Object/RelationMapping,对象-关系映射,就是通过将Java对象映射到数据库表,通过操作

Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门

1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql  5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

【SSH系列】-- hibernate基本原理&amp;&amp;入门demo

    什么是hibernate?      hibernate在英文中是冬眠的意思,当冬季来临,世界万物开始准备冬眠,但是程序猿这种动物好像不冬眠,因为需求变了,要改bug,冬眠,对于对象来说就是持久化.什么叫做持久化呢?持久化,就是把数据(如内存中的对象)保存到可永久保存的存储设备中,比如磁盘,持久化的主要应用就是将内存中的对象存储在数据库中,或者存储在磁盘文件中.xml文件中等等.持久化是将程序数据在持久状态和瞬时状态间转换的机制.JDBC就是一种持久化机制,文件IO也是一种持久化机制. 

框架之 hibernate简单入门

hibernate框架的搭建 Hibernate框架的概述 1. Hibernate框架的概述 * Hibernate称为 * Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. * Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用. * Hibernate是轻量级JavaEE应用的持久层解决方案

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

原文:Spring MVC注解配置结合Hibernate的入门教程及其代码实例 源代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm 1.概述 本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能. 开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5). 数据库:MySQL(数据库名称

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久