首页 > 代码库 > Hibernate 环境搭建

Hibernate 环境搭建

Hibernate 工作流程

技术分享

1、创建工程并导包

技术分享

2、在src根目录下创建配置文件:hibernate.cfg.xml(也可以创建在src其他文件夹下,但是在后面的配置中,需要指明路径)

  

 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 <hibernate-configuration> 6 <!-- 是用来描述数据库的连接 --> 7 <session-factory> 8     <!-- 驱动 --> 9     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>10     <!-- url-->11     <property name="connection.url">jdbc:mysql://localhost:3306/hibernatetest</property>12     <!-- username -->13     <property name="connection.username">root</property>14     <!-- password -->15     <property name="connection.password">mysql</property>16 <!-- 17         hibernate针对建表的操作18           update  如果有表,检查表的结构,如果没有则创建19           create-drop 启动hibernate创建表,结束hibernate删除表20           create  每次启动都重新创建表21           validate 每次启动都检查表的结构22      -->23     <property name="hbm2ddl.auto">update</property>24     <!-- 映射文件 -->25     <mapping resource="cn/test/domain/Person.hbm.xml"/>26 </session-factory>    27     28 </hibernate-configuration>

 3、创建持久化层(一般实现Serializable 接口,并且要有一个默认构造函数【在后面反射中需要用到,否者会报错】)

 1 package cn.test.domain; 2  3 import java.io.Serializable; 4  5 public class Person implements Serializable { 6     private long Pid; 7     private String Pname; 8     private String Page; 9     public long getPid() {10         return Pid;11     }12     public void setPid(long pid) {13         Pid = pid;14     }15     public String getPname() {16         return Pname;17     }18     public void setPname(String pname) {19         Pname = pname;20     }21     public String getPage() {22         return Page;23     }24     public void setPage(String page) {25         Page = page;26     }27 }

 

 4、创建映射文件,一般和持久化层在同一个文件夹下,命名方式一般为:持久化层类名.hbm.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <hibernate-mapping> 5     <!--  6         class元素是用来描述持久化类 7            name属性  类的全名 8             table 该类对应的表名  可以不写,如果不写默认值就是类名 9             catalog 数据库的名字  一般不用写10      -->11      <class name="cn.test.domain.Person" table="person">12          <!-- 13             主键14               name描述的是属性的名称15               column  数据库的字段的名称16               type    类型17               length  长度18          -->19          <id name="Pid" type="java.lang.Long" length="5">20              <column name="pid"></column>21              <!-- 22                 主键的产生器23                     increment 由hibernate产生24              -->25              <generator class="increment"></generator>26          </id>27          28          <!-- property是用来描述一般属性     -->29          <property name="Pname" type="java.lang.String" length="5">30              <column name="Pname"></column>31          </property>32          <!-- column可以不写,如果不写,默认属性的名称 -->33          <property name="Page" type="java.lang.String" length="5"></property>34      </class>35 </hibernate-mapping>

 

 4、测试

  

 1 public class MyTest { 2     private static SessionFactory sessionFactory; 3     static{ 4         Configuration configuration=new Configuration(); 5         //加载配置文件 6         configuration.configure(); 7         //采用工厂模式创建SessionFactory 8          sessionFactory=configuration.buildSessionFactory(); 9     }10     @Test11     public void testSave(){12         Session session=sessionFactory.openSession();13         //开启事物14         Transaction transaction=session.beginTransaction();15         Person person=new Person();16         person.setPname("张三");17         person.setPage("56");18         session.save(person);//保存19         transaction.commit();//提交事务20         session.close();21     }22     23     @Test24     public void testUpdate(){25         Session session=sessionFactory.openSession();26         Transaction transaction=session.beginTransaction();27         //方法一:推荐;先获取要更新的对象,再更新28         Person person=(Person) session.get(Person.class, 1L);//获取原来的值29         person.setPage("100");30         session.update(person);//更新31         32         //方法二:不推荐;创建一个新的对象,覆盖旧的数据33 //        Person person=new Person();34 //        person.setPid(1L);35 //        person.setPage("101");36 //        session.update(person);37         transaction.commit();38         session.close();39     }40     41     @Test42     public void testQuery(){43         Session session=sessionFactory.openSession();44         List<Person> list= session.createQuery("from Person").list();45         System.err.println(list.size());46     }47     48     @Test49     public void testQueryById(){50         Session session=sessionFactory.openSession();51         long l=1;52         Person person= (Person) session.get(Person.class, l);53         System.err.println(person.getPname()+"**********"+person.getPage());54     }55     56     @Test57     public void testDelete(){58         Session session=sessionFactory.openSession();59         Transaction transaction=session.beginTransaction();60          //方法一:61 //        Person person= (Person) session.get(Person.class, 1L);62 //        session.delete(person);63         //方法二:64         Person person=new Person();65         person.setPid(1L);66         session.delete(person);67         transaction.commit();68         session.close();69     }

 

Hibernate 环境搭建