初探Hibernate
刚接触hibernate,以一个小例子,来看看如何搭建hibernate开发环境,如何以面向对象的开发方式来达到与数据库交互的效果。
先看看例子最终的目录结构:
下面是具体步骤:
1、创建一个普通的java项目。
2、创建用户库,并添加hibernate的jar文件,jar文件包括目录hibernate-3.2\lib下的所有jar文件和hibernate-3.2目录下的hibernate3.jar文件。
由于我们的项目要使用mySql数据库,所以这里加入mysql的jar文件。
3、将用户库引入项目。第二步我们创建了用户库,但是我们的项目还不知道,所以我们必须将用户库引入项目。
4、将hibernate-3.2\etc目录下的hibernate.cfg.xml、log4j.properties文件拷到项目的src目录下。
到此为止,hibernate开发环境就基本上搭好了。接下来就看实例了。
新建java类User,代码如下:
- <span style=”font-family:Microsoft YaHei; font-size:18px”>package hibernate;
- import java.util.Date;
- public class User {
- private String id;
- private String userName;
- private String password;
- private Date createTime;
- private Date expireTime;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Date getCreateTime() {
- return createTime;
- }
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
- public Date getExpireTime() {
- return expireTime;
- }
- public void setExpireTime(Date expireTime) {
- this.expireTime = expireTime;
- }
- }
- </span>
将hibernate-3.2\eg\org\hibernate\auction目录下的User.hbm.xml文件拷到User所在目录,并修改该文件。
- <span style=”font-family:Microsoft YaHei; font-size:18px”><?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
- package=”org.hibernate.auction”>
- <class name=”hibernate.User” >
- <id name = “id”>
- <generator class=”uuid”></generator>
- </id>
- <property name=”userName”></property>
- <property name=”password”></property>
- <property name=”createTime”></property>
- <property name=”expireTime”></property>
- </class>
- </hibernate-mapping></span>
接下来配置hibernate.cfg.xml
- <span style=”font-family:Microsoft YaHei; font-size:18px”><!DOCTYPE hibernate-configuration PUBLIC
- “-//Hibernate/Hibernate Configuration DTD 3.0//EN”
- “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
- <hibernate-configuration>
- <session-factory >
- <property name=”hibernate.connection.driver_class”>com.mysql.jdbc.Driver</property>
- <property name=”hibernate.connection.url”>jdbc:mysql://localhost:3306/hibernate</property>
- <property name=”hibernate.connection.username”>root</property>
- <property name=”hibernate.connection.password”>123</property>
- <property name=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</property>
- <property name=”hibernate.show_sql”>true</property>
- <mapping resource=”hibernate/User.hbm.xml”/>
- </session-factory>
- </hibernate-configuration></span>
新建ExportDB.java文件,用于在mysql里创建User表。
- <span style=”font-family:Microsoft YaHei; font-size:18px”>package hibernate;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- public class ExportDB {
- public static void main(String [] args){
- Configuration cfg = new Configuration().configure();
- SchemaExport export = new SchemaExport(cfg);
- export.create(true, true);
- }
- }</span>
注意:执行ExportDB时,你使用的数据库必须已经存在,我的是hibernate库。
执行完后,hibernate库中就会出现我们的user表。
现在看我们具体的操作
新建Client.java类
- <span style=”font-family:Microsoft YaHei”>package hibernate;
- import java.util.Date;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.classic.Session;
- public class Client {
- public static void main(String [] args){
- //读取XML文件
- Configuration cfg = new Configuration().configure();
- //创建sessionFactory
- SessionFactory factory = cfg.buildSessionFactory();
- Session session = null;
- try{
- session = factory.openSession();
- //开启事务
- session.beginTransaction();
- User user = new User();
- user.setUserName(“王五”);
- user.setPassword(“123”);
- user.setCreateTime(new Date());
- user.setExpireTime(new Date());
- //保存user对象
- session.save(user);
- //提交事务
- session.getTransaction().commit();
- }catch (Exception e) {
- e.printStackTrace();
- //事务回滚
- session.getTransaction().rollback();
- }finally{
- if(session != null){
- if(session.isOpen()){
- session.close();
- }
- }
- }
- }
- }
- </span>
执行后,数据库中就会出现我们添加的数据。
到此为止,搭建hibernate环境和实例就演示完毕了。可以看出,使用了hibernate后,我们书写的代码少了许多,操作数据库比原来更加方便,hibernate封装的确实很强悍。