首先,创建java project ,导入需要的jar包

添加hibernate.cfg.xml
1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 <!-- 正文开始 --> 6 <hibernate-configuration> 7 <!--下面是数据库的基本连接信息,对一个应用来说,设置一个session-factory节点就够了,除非我们中间使用了多个数据库--> 8 <session-factory> 9 <!--用户名 --> 10 <property name="connection.username">root</property> 11 <!--url信息 --> 12 <property name="connection.url">jdbc:mysql://localhost:3306/share</property> 13 <!--数据库方言信息--> 14 <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 15 <!--密码 --> 16 <property name="connection.password">1111</property> 17 <!--数据库驱动信息 --> 18 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 19 <!--指定Hibernate映射文件路径 --> 20 <mapping resource="com/example/hibernate/User.hbm.xml" /> 21 </session-factory> 22 </hibernate-configuration>
建立User model:
1 package com.example.hibernate; 2 3 public class User { 4 5 private int id; 6 private String name; 7 private String head_image; 8 private String mobile; 9 private String email; 10 private String address; 11 private int age; 12 private String user_no; 13 private String password; 14 15 16 public int getId() { 17 return id; 18 } 19 public void setId(int id) { 20 this.id = id; 21 } 22 public String getName() { 23 return name; 24 } 25 public void setName(String name) { 26 this.name = name; 27 } 28 public String getHead_image() { 29 return head_image; 30 } 31 public void setHead_image(String head_image) { 32 this.head_image = head_image; 33 } 34 public String getMobile() { 35 return mobile; 36 } 37 public void setMobile(String mobile) { 38 this.mobile = mobile; 39 } 40 public String getEmail() { 41 return email; 42 } 43 public void setEmail(String email) { 44 this.email = email; 45 } 46 public String getAddress() { 47 return address; 48 } 49 public void setAddress(String address) { 50 this.address = address; 51 } 52 public int getAge() { 53 return age; 54 } 55 public void setAge(int age) { 56 this.age = age; 57 } 58 public String getUser_no() { 59 return user_no; 60 } 61 public void setUser_no(String user_no) { 62 this.user_no = user_no; 63 } 64 public String getPassword() { 65 return password; 66 } 67 public void setPassword(String password) { 68 this.password = password; 69 } 70 71 72 }
同时,数据库建立起相应的表(此处省略)
映射文件,User.hbm.xml
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 6 <!-- 7 <hibernate-mapping>一般不去配置,采用默认即可。 8 default-cascade="none":默认的级联风格,表与表联动。 9 default-lazy="true":默认延迟加载 10 --> 11 <hibernate-mapping> 12 13 <!-- 14 <class>:使用class元素定义一个持久化类。 15 name="com.example.hibernate":持久化类的java全限定名; 16 table="user":对应数据库表名; 17 mutable="true":默认为true,设置为false时则不可以被应用程序更新或删除; 18 dynamic-insert="false":默认为false,动态修改那些有改变过的字段,而不用修改所有字段; 19 dynamic-update="false":默认为false,动态插入非空值字段; 20 select-before-update="false":默认为false,在修改之前先做一次查询,与用户的值进行对比,有变化都会真正更新; 21 optimistic-lock="version":默认为version(检查version/timestamp字段),取值:all(检查全部字段)、dirty(只检查修改过的字段)、 22 none(不使用乐观锁定),此参数主要用来处理并发,每条值都有固定且唯一的版本,版本为最新时才能执行操作; 23 --> 24 <class name="com.example.hibernate.User" table="user" dynamic-insert="true" dynamic-update="true" optimistic-lock="version"> 25 26 <!-- 27 <id>:定义了该属性到数据库表主键字段的映射。 28 name="userId":标识属性的名字; 29 column="userId":表主键字段的名字,如果不填写与name一样; 30 --> 31 <id name="id"> 32 <!-- <generator>:指定主键由什么生成,推荐使用uuid,assigned指用户手工填入。 native表示由本地数据库设定决定--> 33 <generator class="native"/> 34 </id> 35 36 <!-- 37 <version/>:使用版本控制来处理并发,要开启optimistic-lock="version"和dynamic-update="true"。 38 name="version":持久化类的属性名,column="version":指定持有版本号的字段名; 39 --> 40 <!-- <version name="version" column="version"/> --> 41 42 <!-- 43 <property>:为类定义一个持久化的javaBean风格的属性。 44 name="name":标识属性的名字,以小写字母开头; 45 column="name":表主键字段的名字,如果不填写与name一样; 46 update="true"/insert="true":默认为true,表示可以被更新或插入; 47 --> 48 <property name="name" column="name" /> 49 <property name="head_image" column="head_image" /> 50 <property name="mobile" column="mobile" /> 51 <property name="email" column="email" /> 52 <property name="address" column="address" /> 53 <property name="age" column="age" /> 54 <property name="user_no" column="user_no" /> 55 <property name="password" column="password" /> 56 57 <!-- 58 组件映射:把多个属性打包在一起当一个属性使用,用来把类的粒度变小。 59 <component name="属性,这里指对象"> 60 <property name="name1"></property> 61 <property name="name2"></property> 62 </component> 63 --> 64 65 <!-- 66 <join>:一个对象映射多个表,该元素必须放在所有<property>之后。 67 <join table="tbl_test:子表名"> 68 <key column="uuid:子表主键"></key> 69 <property name="name1:对象属性" column="name:子表字段"></property> 70 </join> 71 --> 72 73 </class> 74 75 </hibernate-mapping>
接下来是测试类:
1 package com.example.hibernate; 2 3 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.cfg.Configuration; 8 import org.hibernate.service.ServiceRegistry; 9 import org.hibernate.service.ServiceRegistryBuilder; 10 import org.junit.After; 11 import org.junit.Before; 12 import org.junit.Test; 13 14 15 public class MyTest { 16 17 SessionFactory sessionFactory; 18 Session session; 19 Transaction transaction; 20 21 @Before 22 public void init(){ 23 Configuration configuration = new Configuration().configure(); 24 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); 25 sessionFactory = configuration.buildSessionFactory(serviceRegistry); 26 session = sessionFactory.openSession(); 27 transaction = session.beginTransaction(); 28 } 29 30 @Test 31 public void save(){ 32 User user = new User(); 33 user.setAddress("福建厦门鼓浪屿"); 34 user.setAge(10); 35 user.setEmail("1233454543@zzu.cn"); 36 user.setHead_image("ïmg1.jpg"); 37 user.setMobile("123224324"); 38 user.setName("老王"); 39 user.setPassword("11111"); 40 user.setUser_no("11111"); 41 session.save(user); 42 } 43 44 @After 45 public void destroy(){ 46 transaction.commit(); 47 session.close(); 48 sessionFactory.close(); 49 } 50 51 }
单表的操作到此完成
                    
                
                
            
        
浙公网安备 33010602011771号