Hibernate的搭建及使用
1.创建普通的java项目。
因为Hibernate是一个轻量级的框架,不像servlet,还必须需要tomcat的支持,Hibernate只要jdk支持即可。
2.引入jar包。
可以在项目中直接引入jar包,在:项目--->属性--->然后如下图:
另一种办法就是引入库,相当于一个文件夹,把所有的jar包放到自己新建的文件夹中。在:窗体-->选项-->然后如下图:
3.提供Hibernate的配置文件。hibernate.cfg.xml文件。完成相应的配置。
1 <hibernate-configuration> 2 3 <session-factory> 4 5 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 6 7 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property> 8 9 <property name="hibernate.connection.username">root</property> 10 11 <property name="hibernate.connection.password">bjpowernode</property> 12 13 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 14 15 </session-factory> 16 17 </hibernate-configuration>
在这里连接mysql数据库,解释一下上面的标签。按照顺序来依次解释:第一个是连接mySql的驱动;第二个是连接的url;url后面的 hibernate_first是数据库名字;第三个是和第四个分别是用户名和密码。第五个是方言。因为 hibernate对数据库封装,对不同的数据库翻译成不同的形式,比如drp中的分页,若是使用oracle数据库,则翻译成sql语句三层嵌套。若是 使用mySql数据库,则翻译成limit语句。
4.建立实体User类:
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <class name="com.bjpowernode.hibernate.User"> 7 <id name="id"> 8 <generator class="uuid"/> 9 </id> 10 <property name="name"/> 11 <property name="password"/> 12 <property name="createTime"/> 13 <property name="expireTime"/> 14 </class> 15 </hibernate-mapping>
6.我们也映射完毕了,但是hibernate怎么知道我们映射完了呢,以及如何映射的呢?这就需要我们把我们自己的映射文件告诉hibernate,即:在hibernate.cfg.xml配置我们的映射文件。
1 <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
7.生成数据库表。大家也看到了我们上述还没有新建数据表呢,在第三步我们只是新建了数据库而已。按照我们普通的做法,我们应该新建数据表啊,否则实体存 放何处啊。这个别急,数据库表这个肯定是需要有的,这个毋庸置疑,但是这个可不像我们原来需要自己亲自动手建立哦,现在hibernate需要帮我们实现 哦,如何实现嗯,hibernate会根据配置文件hibernate.cfg.xml和我们的映射文件User.hbm.xml会自动给我们生成相应的 表,并且这个表的名字也给我们取好:默认是User。那如何生成表呢?
1 //默认读取hibernate.cfg.xml文件 2 Configuration cfg = new Configuration().configure(); 3 4 SchemaExport export = new SchemaExport(cfg); 5 export.create(true, true);
8.那我们就开始进行操作啦,我们添加一个用户对象,看看hibernate是如何添加的呢?跟我们以前的做法有什么不同呢?
1 public class Client { 2 3 public static void main(String[] args) { 4 5 //读取hibernate.cfg.xml文件 6 Configuration cfg = new Configuration().configure(); 7 8 //建立SessionFactory 9 SessionFactory factory = cfg.buildSessionFactory(); 10 11 //取得session 12 Session session = null; 13 try { 14 session = factory.openSession(); 15 //开启事务 16 session.beginTransaction(); 17 User user = new User(); 18 user.setName("张三"); 19 user.setPassword("123"); 20 user.setCreateTime(new Date()); 21 user.setExpireTime(new Date()); 22 23 //保存User对象 24 session.save(user); 25 26 //提交事务 27 session.getTransaction().commit(); 28 }catch(Exception e) { 29 e.printStackTrace(); 30 //回滚事务 31 session.getTransaction().rollback(); 32 }finally { 33 if (session != null) { 34 if (session.isOpen()) { 35 //关闭session 36 session.close(); 37 } 38 } 39 } 40 } 41 }
第八步,我们可以看到,没有我们熟悉的insert into表的sql语句了,那怎么添加进去的呢,到底添加了没?让我真实滴告诉你,确实添加进去了,不信的,可以自己尝试哦,这也是hibernate的优点,对jdbc封装的彻底,减少了我们对数据的操作时间哈。