参考资料来源于hibernate3.3.2 reference
1.实体类初识
下面是一个JavaBean,但是hibernate还不认识它
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;
}
}
这个类遵循标准的JavaBean约定,使用私有的field,添加相应的get与set方法。
id属性用于标识特定的event,所有的持久化类必须有一个标识属性。持久化类必须有一个无参构造器,hibernate会通过反射机制来创建对象。
2.hiberante映射文件(xxx.hbm.xml)
EVENT类对应的hibernate映射文件,它告诉hibernate在操作EVENT类的对象时对数据库中什么表进行操作:
<hibernate-mapping package="org.hibernate.tutorial.domain">
<class name="Event" table="EVENTS">
<id name="id" column="EVENT_ID">
<generator class="native"/>//native表示跟据数据库本来所具有的能力来生成主键,如sqlserver可以自增,
那么在这里native就相当于identity,对于mysql,可用sequence来生成主键,那么native就对应sequence
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
</class>
</hibernate-mapping>
class属性用来告诉hibernate,Event类对应数据库中的EVENTS表
这里的id属性用于标识数据库中的主键。name=id表示JavaBean中的id属性是用于hibernate作为主键来访问的,coloumn=EVENT_ID表示数据库中该表的主键列名为EVENT_ID。
generator用于描述主键的生成策略。
property用于表示EVENT类中其它的属性。name表示EVENT类中属性的名称,type表示hibernate映射类型,它可以在java与sql类型之间转换。column表示该属性对应的数据库中表的名字。
那么像下面的title只有name,没有type与column,hibernate会自动通过反射机制得到title在EVENT类中的类型,然后给定一个相应的值,对于column,hibernate将默认表中的名称与类中的名称一致。
3.hibernate配置文件(xxx.cfg.xml)
有了hibernate映射文件,hibernate可以通过对对象的操作,进而操作数据库表,但是hibernate怎么知道你要操作什么数据库,及你的映射文件又放在什么地方呢?
所以这里就引出了hibernate配置文件,它有两种形式,hibernate.cfg.xml或hibernate.properties,一般以xml为主,
当你用new Configuration().configue()加载配置文件时,默认加载hibernate.cfg.xml,如果你的hibernate配置文件的名字为xxx.cfg.xml那么你必须为configue()方法加参数,即new Configuration().configue("xxx.cfg.xml")。
下面是一个配置文件的例子:
<hibernate-configuration>
一个session-factory对应一个数据库,在这里要配置数据库相关信息,并且hibernate映射文件信息必须在这里进行配置(指出映射文件所处的位置),只有这样,hibernate才能知道什么实体类与什么表对应。
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>数据库驱动
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>连接数据库的url
<property name="connection.username">sa</property>用户名
<property name="connection.password"></property>密码
<!-- 方言,每种数据库有自己的特性,你要跟它交流就得用与之相应的方式,就跟你跟中国人说话要用汉语一样-->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- 是否显示sql -->
<property name="show_sql">true</property>
<mapping resource="org/zengge/hibernate/pojo/Event.hbm.xml"/>映射文件位置,这个很关键,如果定位不对,就会报错。
</session-factory>
</hibernate-configuration>
分享到:
相关推荐
在Hibernate中,事务处理是通过Session的beginTransaction()、commit()和rollback()方法实现的。了解事务的ACID特性以及如何在Hibernate中处理事务,可以确保数据的一致性。 7. **一对多、多对一、多对多关联映射*...
1. **对象关系映射(ORM)**:ORM是将数据库表与Java类之间建立映射的技术,允许开发者以面向对象的方式处理数据库。Hibernate通过XML配置文件或注解来定义这种映射关系,使得数据库操作如同操作普通Java对象一样...
5. **Transaction管理**:Hibernate提供了事务管理功能,通过SessionFactory的openSession()方法创建Session,并通过Session的beginTransaction()、commit()和rollback()方法控制事务。 6. **Criteria查询**:除了...
1. Hibernate概述: Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的SQL语句,即可实现对数据库的CRUD(创建、读取、更新和删除)操作。它的核心理念是将面向...
【hibernate案例1】是初次接触和学习Hibernate框架的一个基础教程。Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的数据操作。在这个案例中,我们将深入理解Hibernate的...
1. **环境准备**:首先确保已安装JDK,并在项目中引入Hibernate的依赖库。 2. **配置Hibernate**:创建`hibernate.cfg.xml`,设置数据库连接参数,如URL、用户名、密码、驱动类等。 3. **创建实体类**:定义一个...
1. 添加Hibernate依赖:在项目中引入Hibernate的JAR包或者Maven/Gradle依赖。 2. 配置Hibernate:创建hibernate.cfg.xml文件,设置数据库连接参数,如驱动类名、URL、用户名、密码等。 二、实体类定义 1. 创建实体...
1. `hibernate-core.jar`:这是Hibernate的核心库,包含了持久化框架的主要功能,如Session接口、Entity接口、Criteria查询等。 2. `hibernate-entitymanager.jar`:提供JPA(Java Persistence API)的支持,使得...
1. **对象关系映射(ORM)**:ORM是Hibernate的核心,它将数据库表映射为Java类,而表中的记录映射为类的实例。通过这种方式,开发者可以使用面向对象的编程方式来处理数据库操作。 2. **配置文件(hibernate.cfg....
1. **Hibernate概述**:Hibernate提供了一种在Java应用程序中持久化对象的机制,通过将对象模型转换为关系数据模型,使得开发者可以专注于业务逻辑而不是底层的数据库操作。 2. **安装与配置**:文档详细解释了如何...
Transaction transaction = session.beginTransaction(); ``` - **解释**:通过 `Session` 对象获取事务对象,并开始事务处理。 以上步骤构成了使用 Hibernate 进行数据库操作的基本流程,通过这一流程,开发者...
1. **实体管理**:在Hibernate中,实体类代表数据库中的表,实体对象则代表表中的记录。通过在实体类上使用`@Entity`注解,Hibernate可以识别这个类作为数据库表的映射。`@Id`注解用于标记主键字段,而`@...
1. **hibernate.cfg.xml**: 创建一个名为`hibernate.cfg.xml`的配置文件,其中定义了数据库连接信息、SessionFactory配置等。例如: ```xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate...
**1. Hibernate简介** Hibernate是由 Gavin King 创建的一个开源项目,它实现了JPA(Java Persistence API)规范,提供了一种在Java应用中持久化对象的机制。通过Hibernate,我们可以避免编写大量的SQL语句,而是...
Hibernate的Transaction接口提供了begin(), commit(), rollback()等方法,实现数据库事务的ACID特性。 八、性能优化 1. 配置优化:合理设置连接池大小,优化缓存策略。 2. 查询优化:避免N+1查询问题,使用JOIN查询...
1. Hibernate提供了多种主键生成策略,如native、uuid等。 2. native策略会根据所使用的数据库自动选择合适的主键生成策略。 3. uuid策略会生成一个全局唯一的UUID字符串作为主键。 **实体类操作**: - **添加**:...
1. 实体(Entity):在Hibernate中,实体代表数据库表中的记录,是Java类的实例。通过@Entity注解标记一个Java类作为实体。 2. 表映射(Table Mapping):Hibernate将Java类映射到数据库表,通过配置文件或注解来...
在Hibernate中,事务的生命周期通常与Session关联,可以通过Session的beginTransaction()、commit()和rollback()方法来控制事务的提交和回滚。 5. **Entity和持久化类**: 在Hibernate中,我们通过在Java类上使用@...
1. **实体(Entity)**: 在Hibernate中,实体通常对应数据库中的表,它们是Java类,通过注解或XML配置与数据库表进行映射。 2. **对象关系映射(ORM)**: Hibernate 提供了ORM工具,将Java对象与数据库表之间的映射...
session.beginTransaction(); Teacher t = (Teacher) session.get(Teacher.class, 3); t.setName("yangtb2"); session.update(t); session.getTransaction().commit(); } } ``` 然而,Hibernate 生成的 SQL ...