-
Hibernate配置
使用Hibernate要先下载相关源码然后配置它,可以从官网下载HIbernate框架的jar包。本次学习以3.3.2版本的Hibernate为例,首先下载hibernate-distribution-3.3.2.GA-dist.zip文件。
在hibernate-distribution-3.3.2.GA-dist.zip文件中需要 jar包有根目录下的hibernate3.jar、\lib\required目录下的所有jar。
使用log4j记录日志时需要log4j-1.2.16.jar,另外需要下载slf4j-1.5.8.zip文件,需要其中的slf4j-log4j12-1.5.8.jar。
要连接MSSQL2008数据库需要sqljdbc4.jar包(连接Oracle数据库需要ojdbc14.jar包,这个包可以在Oracle数据库的安装目录下找到)。
在Hibernate项目的根目录下下面要创建一个名为“hibernate.cfg.xml”的文件,这是Hibernate的配置文件,主要存放连接数据库的配置信息,这里将它放在src的根目录。
所需Jar下载:http://download.csdn.net/detail/sn_explore6688/6458715
配置文件:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=MySchool</property> <property name="connection.username">sa</property> <property name="connection.password">abc</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> </session-factory> </hibernate-configuration>
-
持久化类及映射配置文件
添加可持久化类。可持久化类使用普通的Java对象即可,习惯上叫做POJO(Plain Old Java Objects)。POJO很像JavaBean,它的属性通过getter和setter方法来访问。
package com.hib.po; public class Admin { private String loginId; private String loginPwd; public String getLoginId() { return loginId; } public void setLoginId(String loginId) { this.loginId = loginId; } public String getLoginPwd() { return loginPwd; } public void setLoginPwd(String loginPwd) { this.loginPwd = loginPwd; } }
添加该对象的映射文件。代码如下:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hib.po.Admin" table="admin"> <id name="loginId" type="java.lang.String"> <column name="loginId" length="50" /> <generator class="assigned"/> </id> <property name="loginPwd" type="java.lang.String"> <column name="loginPwd" length="50" not-null="true" /> </property> </class> </hibernate-mapping>
说明:该文件中,展示了对象和关系数据库表的对应关系。首先,class标签中用于指定Admin类与admin表的映射。接下来是id标签,代表主键,这个表只有两个字段,即loginId和loginPwd。所以这里把loginId看作主键,也就是说loginId是唯一且不能为空。
id标签里面的name表示Admin类中的属性名字,type是类型;column标签里面的name表示表中的字段的名字。generator标签定义主键的生成方式,此处设置表示主键是由应用程序分配的。
property标签中的内容表示Admin类中与表中其他字段的映射,如果还有其他字段,就还要增加property标签。用于其他字段的标签配置与id标签基本类似。
添加完这个映射文件后,要在hibernate.cfg.xml中添加这个文件的声明。这个声明语句添加在<session-factory>的结束标签之前就可以。
关键代码:
注意包中的“.”,这里需要换成“/”<mapping resource="com/hib/po/Admin.hbm.xml"/>
-
通过Hibernate实现添加功能
添加AdminDao类实现对数据库的操作,代码如下:
这个类中用到Session对象和Transaction对象。此Session对象是hibernate3.jar包中的,对数据库的操作都要通过它来完成。Transaction对象用来处理对数据库操作的事务。package com.hib.dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.hib.po.Admin; public class AdminDao { private Session session = null; private Transaction tran = null; public AdminDao() { Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); this.session = factory.openSession(); } public void save(Admin admin) { try { tran = session.beginTransaction(); this.session.save(admin); tran.commit(); System.out.println("用户信息添加成功"); } catch (RuntimeException e) { if (tran!=null) { tran.rollback(); throw e; } }finally{ this.session.close(); } } }
总结下Hibernate中执行持久化操作的步骤:
(1)读取并解析配置文件:
(2)读取并解析映射信息,创建SessionFactory:Configuration config = new Configuration().configure();
(3)打开Session:SessionFactory factory = config.buildSessionFactory();
(4)开始一个事务(增、删、改操作必须有,查询操作可选):this.session = factory.openSession();
(5)持久化操作:tran = session.beginTransaction();
(6)提交事务:this.session.save(admin);
(7)关闭Session:tran.commit();
this.session.close();
然后再定义测试类AdminTest测试结果,关键代码:
package com.hib.test; import com.hib.dao.AdminDao; import com.hib.po.Admin; public class AdminTest { public static void main(String[] args) { Admin admin=new Admin(); admin.setLoginId("a"); admin.setLoginPwd("123"); AdminDao adminDao=new AdminDao(); adminDao.save(admin); } }
附项目结构图:
第一个Hibernate程序(一)
最新推荐文章于 2018-05-07 21:31:10 发布