Hibernate怎么创建和配置

65次阅读
没有评论

共计 4338 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要讲解了“Hibernate 怎么创建和配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Hibernate 怎么创建和配置”吧!

1. 获取 Hibernate

既然要使用 Hibernate 来开发应用,那么就必须先获取 Hibernate 的发布包,我们可以下载自己需要的版本,我下载的是 hibernate-search-4.4.0.Alpha2。

下载完成,解压后得到以下内容:

2. 创建 Hibernate 项目,添加 Jar 包

创建一个 Java Project,建好项目之后,需要添加上 Hibernate 运行所必须的 Jar 包,如果不知道哪些可以不添加就直接添加 lib\required 中的所有 Jar 包,如果清楚的知道每个包的作用就可以进行相应的删减。

3. 创建持久化类

package events;import java.util.Date;public class Event { private Long id; private String title; private Date date; public Event() { } public Long getId() { return id;
 } private void setId(Long id) { this.id = id;
 } public Date getDate() { return date;
 } public void setDate(Date date) { this.date = date;
 } public String getTitle() { return title;
 } public void setTitle(String title) { this.title = title;
 }
}

注意:

(1)无参构造函数的作用是用于 Hibernate 通过反射机制来实例化类对象的时候。

(2)在所有的持久化实体类中都需要一个唯一的标识符属性。

(3)通常不会操作对象的标识(identity),因此它的 setter 方法的访问级别应该声明 private。这样当对象被保存的时候,只有 Hibernate 可以为它分配标识符值。

4. 映射文件

映射文件的作用就是告诉 Hibernate 应该访问哪个数据库 (database) 中的哪张表 (table) 的哪些字段(column)。

映射文件应该保存在持久类的源文件目录下,映射文件可随意地命名,但 hbm.xml 的后缀已成为 Hibernate 开发者社区的约定。

本例用到的映射文件如下:

?xml version= 1.0  encoding= UTF-8 ? !DOCTYPE hibernate-mapping PUBLIC
  -//Hibernate/Hibernate Mapping DTD 3.0//EN 
  http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd hibernate-mapping package= events 
  class name= Event  table= EVENTS 
  !-- id 用于标示标识符属性,即数据表的主键,name 对应实体中的属性名,column 对应数据表中的字段名 -- 
  id name= id  column= EVENT_ID 
  !--  配置标识符的生成策略  -- 
  generator  >5.Hibernate 配置 

通过配置文件将应用程序与数据库连接,配置数据库的相关属性。此外,还要添加映射文件资源,使得 Hibernate 能够找到映射文件,并将映射文件与实体类关联。

 ?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 
  !--  设置连接数据库的驱动  -- 
  property name= connection.driver_class com.mysql.jdbc.Driver /property 
  !--  设置数据库服务器的连接路径  -- 
  property name= connection.url jdbc:mysql://localhost:3306/db /property 
  !--  设置数据库服务器的连接用户  -- 
  property name= connection.username root /property 
  !--  设置数据库服务器的连接用户的密码  -- 
  property name= connection.password Lynn0714 /property 
  !--  数据库连接池大小  -- 
  property name= connection.pool_size 1 /property 
  !-- SQL 方言,要根据使用的数据库来配置  -- 
  property name= dialect org.hibernate.dialect.MySQLDialect /property 
  !--  设置 Hibernate 的自动 session 管理  -- 
  property name= current_session_context_class thread /property 
  !--  设置二级 cache -- 
  property name= cache.provider_class org.hibernate.cache.NoCacheProvider /property 
  !--  设置运行时是否显示调用的 SQL 语句  -- 
  property name= show_sql true /property 
  !-- Drop and re-create the database schema on startup -- 
  property name= hbm2ddl.auto create /property 
  !--  使用的映射文件  -- 
  mapping resource= events/events.hbm.xml  / 
  /session-factory /hibernate-configuration

上图配置并不是包含所有内容

上图配置了 Hibernate 的 SessionFactory,一个关联于特定数据库全局的工厂(factory)。如果你要使用多个数据库,就要用多个的,通常把它们放在多个配置文件中。(Hibernate 如何识别是在何时使用哪个配置文件?)

6. 用 Ant 构建

此处 Ant 操作全部仿照操作,不知道具体如何使用。

7. 启动和辅助类

在这个环节中,需要创建一个全局的 SessionFactory,通过 SessionFactory 来创建并打开 Session,一个 Session 代表一个单线程的单元操作,SessionFactory 则是个线程安全的全局对象,只需要被实例化一次。

package util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { private static final SessionFactory sessionFactory; static{ try{ sessionFactory = new Configuration().configure().buildSessionFactory();
 }catch(Throwable ex){ System.err.println( 初始化 SessionFactory 失败 +ex); throw new ExceptionInInitializerError(ex);
 }
 } public static SessionFactory getSessionFactory(){ return sessionFactory;
 }
}

8. 加载并存储对象

package events;import java.util.Date;import org.hibernate.Session;import util.HibernateUtil;public class EventManager { public static void main(String[] args) { EventManager mgr = new EventManager(); if (args[0].equals(store)) { mgr.createAndStoreEvent( My Event , new Date());
 }
 HibernateUtil.getSessionFactory().close();
 } private void createAndStoreEvent(String title, Date theDate) { Session session = HibernateUtil.getSessionFactory().getCurrentSession();
 session.beginTransaction();
 Event theEvent = new Event();
 theEvent.setTitle(title);
 theEvent.setDate(theDate);
 session.save(theEvent);
 session.getTransaction().commit();
 }
}

按上述步骤操作完成,运行后出现下面异常:

出现 java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的 JDK 编译的 Java class 文件试图在较低版本的 JVM 上运行,所报的错误。

出现这个错误,是因为缺少 JTA 的 Jar 包,添加上即可,由于我也不知道哪些是必须的就添加了 lib\provided 目录下的所有 Jar 包

修正上述两个错误后,运行成功

感谢各位的阅读,以上就是“Hibernate 怎么创建和配置”的内容了,经过本文的学习后,相信大家对 Hibernate 怎么创建和配置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计4338字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)