Hibernate教程-不使用集成开发环境的第一个Hibernate示例
在这里,我们将创建第一个不使用集成开发环境的Hibernate应用程序。要创建第一个Hibernate应用程序,我们需要按照以下步骤进行操作:
- 创建持久化类
- 为持久化类创建映射文件
- 创建配置文件
- 创建检索或存储持久对象的类
- 加载jar文件
- 使用命令提示符运行第一个Hibernate应用程序
1) 创建持久化类
一个简单的持久化类应该遵循一些规则:
- 无参构造函数:建议至少有一个默认构造函数,至少包可见性,以便Hibernate可以使用newInstance()方法创建持久化类的实例。
- 提供标识符属性:最好分配一个属性作为id。该属性在数据库中充当主键。
- 声明getter和setter方法:Hibernate默认通过getter和setter方法名称识别方法。
- 优先选择非最终类:Hibernate使用代理的概念,这取决于持久化类。应用程序程序员将无法使用延迟关联获取代理。
让我们创建简单的持久化类:
Employee.java
package cn.javatiku.mypackage;
public class Employee {
private int id;
private String firstName, lastName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
2) 为持久化类创建映射文件
映射文件的名称按照惯例应该是class_name.hbm.xml。映射文件有许多元素。
- hibernate-mapping:它是映射文件中的根元素,包含所有映射元素。
- class:它是hibernate-mapping元素的子元素。它指定了持久化类。
- id:它是class的子元素。它指定了类中的主键属性。
- generator:它是id的子元素。用于生成主键。有许多生成器类,如assigned、increment、hilo、sequence、native等。我们稍后将学习所有的生成器类。
- property:它是class的子元素,指定持久化类的属性名称。
让我们看一下Employee类的映射文件:
employee.hbm.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 5.3//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-5.3.dtd">
<hibernate-mapping>
<class name="cn.javatiku.mypackage.Employee" table="emp1000">
<id name="id">
<generator class="assigned"></generator>
</id>
<property name="firstName"></property>
<property name="lastName"></property>
</class>
</hibernate-mapping>
3) 创建配置文件
配置文件包含关于数据库和映射文件的信息。按照惯例,它的名称应该是hibernate.cfg.xml。
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 5.3//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-5.3.dtd">
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="connection.username">system</property>
<property name="connection.password">jtp</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<mapping resource="employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4) 创建检索或存储对象的类
在这个类中,我们只是将员工对象存储到数据库中。
package cn.javatiku.mypackage;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class StoreData {
public static void main(String[] args) {
//Create typesafe ServiceRegistry object
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
SessionFactory factory = meta.getSessionFactoryBuilder().build();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
Employee e1 = new Employee();
e1.setId(101);
e1.setFirstName("Gaurav");
e1.setLastName("Chawla");
session.save(e1);
t.commit();
System.out.println("successfully saved");
factory.close();
session.close();
}
}
5) 加载jar文件
要成功运行Hibernate应用程序,您应该拥有hibernate5.jar文件。
6) 如何在不使用IDE的情况下运行第一个Hibernate应用程序
我们可以通过IDE(例如Eclipse、Myeclipse、Netbeans等)或不使用IDE来运行此Hibernate应用程序。我们将在下一章中学习如何在Eclipse IDE中创建Hibernate应用程序。
要在不使用IDE的情况下运行Hibernate应用程序:
- 为此示例安装oracle10g。
- 加载Hibernate的jar文件。(加载jar文件的一种方法是将所有jar文件复制到JRE/lib/ext文件夹下)。最好将这些jar文件放在公共和私有JRE中。
- 现在,通过java cn.javatiku.mypackage.StoreData运行StoreData类。