我们以Customer为例,Customer中有firstName何laseName这两个属性,而在数据库中并没有这两个属性对应的字段,仅有一个name字段。
Hibernate只是对应pojo中的set,get方法,至于你的pojo里面是否有这个name这个private属性无关紧要,只要有setName,getName方法即可。因为当hibernate执行save,update,saveorupdate时,是找对应字段名的get方法。当执行load,find,get方法时,是找对应字段名的set方法而已,跟你是否在pojo声明这个私有属性无任何关系,只要有与字段名对应的set,get方法即可。
下面是DEMO:
这个是Customer的POJO
public class Customer implements java.io.Serializable {
// Fields
private long oid;
private String firstName;
private String lastName;
public long getOid() {
return oid;
}
public void setOid(long oid) {
this.oid = oid;
}
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;
}
//注意这个地方,是与数据库中的name字段是对应的.
public void setName(String name) {
StringTokenizer t = new StringTokenizer(name);
setFirstName(t.nextToken());
setLastName(t.nextToken());
}
public String getName() {
return getFirstName() + " " + getLastName();
}
public String toString() {
return "firstName:"+this.firstName+" lastName:"+this.lastName;
}
}
这个是映射文件
<hibernate-mapping>
<class name="cn.com.test.Customer" table="customer" catalog="hibernate">
<id name="oid" type="long">
<column name="oid" />
<generator class="native"></generator>
</id>
<property name="name" type="string">
<column name="name" length="25" />
</property>
</class>
</hibernate-mapping>
这个测试用例
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Transaction tran = null;
try {
tran = session.beginTransaction();
Customer customer = new Customer();
customer.setFirstName("威廉");
customer.setLastName("史密斯");
session.save(customer);
tran.commit();
} catch (Exception e) {
if (tran != null) {
tran.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
Session session2 = HibernateSessionFactory.getSession();
Transaction tran2 = null;
Customer customer = null;
try {
tran2 = session2.beginTransaction();
customer = (Customer)session2.get(Customer.class, new Long(1));
tran2.commit();
} catch (Exception e) {
if (tran2 != null) {
tran2.rollback();
}
e.printStackTrace();
} finally {
session2.close();
}
if (customer != null) {
System.out.println(customer.toString());
}
}
}
这个是sql文件
CREATE TABLE `customer` (
`oid` bigint(20) NOT NULL auto_increment,
`name` varchar(25) default NULL,
PRIMARY KEY (`oid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Hibernate日志
Hibernate:
insert
into
hibernate.customer
(name)
values
(?)
Hibernate:
select
customer0_.oid as oid0_0_,
customer0_.name as name0_0_
from
hibernate.customer customer0_
where
customer0_.oid=?
firstName:威廉 lastName:史密斯
分享到:
相关推荐
MyEclipse中自动生成Hibernate的POJO、DAO和hbm.xml文件 MyEclipse是一款功能强大且流行的集成开发环境(IDE),它提供了许多实用的功能来帮助开发者快速构建和维护项目。其中,MyEclipse提供了对Hibernate的支持,...
- 生成POJO后,还需要配置Hibernate的映射文件(通常是`.hbm.xml`或`@Entity`注解)来指定表和类之间的映射关系。 - 对于注解方式,可以在生成的POJO类上添加相应的`@Entity`、`@Table`、`@Id`等注解。 - 如果...
4. **设置输出目录和包名**:在 `Console configuration` 中选择刚才创建的 Hibernate 配置,将 `Output directory` 设置为项目的 `src` 目录,并指定一个包名,例如 `www.db.pojo`,这个包将会被自动创建。...
Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过提供一个高级的API,Hibernate允许开发者以面向对象的方式操作数据库,而无需直接编写SQL语句。这极大地提高了开发...
在Java开发中,Eclipse是一款广泛使用的集成开发环境(IDE),而Hibernate则是一个优秀的对象关系映射(ORM)框架,它极大地简化了数据库操作。为了提高开发效率,开发者经常使用Hibernate Tools来反向工程数据库...
4. **执行生成操作**:在IDE中使用Hibernate Tools的代码生成功能,选择对应的HBM文件,工具会根据文件中的映射信息自动生成对应的POJO类,包括属性、getter和setter方法,以及可能的构造函数。 5. **检查和修改**:...
这个文件通常与POJO类一起使用,使得Hibernate知道如何在对象和数据库之间转换。 8. **配置SessionFactory**: 在应用程序中,你需要配置SessionFactory,它是Hibernate的核心组件,负责管理数据库连接和事务。...
Hibernate的核心是Hibernate配置文件(hibernate.cfg.xml)和实体类的映射文件(.hbm.xml),这两者定义了Java对象和数据库表之间的对应关系。 **POJO(Plain Old Java Object)** 是一个没有特定约束或行为的简单...
在百灵报表(BIRT)中访问Hibernate POJO是一个常见的需求,特别是在Java/J2EE Web应用程序中,因为Hibernate提供了一种高效的对象关系映射(ORM)解决方案,使得开发者可以更方便地操作数据库。BIRT(Business ...
在IT行业中,Hibernate是一个强大的Java持久化框架,它简化了与关系型数据库的交互,使得开发者无需编写大量的SQL代码即可实现对象-关系映射(ORM)。在这个场景中,我们讨论的是如何使用MyEclipse工具来生成...
通过以上分析,可以看出PowerDesigner与HibernateTools在数据库设计和代码生成方面发挥着重要作用,前者专注于数据库模型的设计和维护,后者则侧重于基于模型的代码自动化生成,二者结合使用可以显著提高数据库应用...
Hibernate是Java领域内最受欢迎的对象关系映射(ORM)框架之一,它简化了Java应用程序与关系型数据库之间的交互,使得开发人员能够用面向对象的方式处理数据库操作,而无需深入了解SQL语法或数据库API。通过将Java...
4. **处理关联关系**:如果表之间存在关联,比如外键,需要在POJO类中添加对应的引用或集合属性,并生成对应的getter、setter方法。 5. **写入文件系统**:将生成的POJO类代码写入到指定的目录下,以便于开发者在...
Hibernate 和 JDBC 都是用于访问关系数据库的技术,但是它们之间有着本质的区别。JDBC 是一种低级别的数据库访问技术,它需要编写大量的代码来处理数据库交互。Hibernate 则是一种高级别的数据库访问技术,它提供了...
### ibatis 与 hibernate 之间的比较:优点和缺点 #### 概述 在 Java 开发领域中,对象关系映射(Object Relational Mapping,简称 ORM)是一种将面向对象编程语言中的对象模型与数据库系统中的关系模型相互转换的...
- Hibernate:在Hibernate中,POJO作为持久化对象,通过注解或XML配置与数据库表进行映射。查询时,Hibernate将SQL结果自动转化为POJO实例。 - MyBatis:MyBatis允许开发者自由编写SQL,将结果集映射到POJO,提供...
"自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...
JPA、ORM和Hibernate之间的关系是:ORM是一种思想,JPA是这种思想的具体表现形式,即按照Java语法规范定义的一套标准接口,Hibernate则是这组接口的一个具体实现。 Hibernate框架的下载和配置也是Java开发人员必须...
- **主键映射**:定义了数据库表中主键字段与POJO类中主键属性之间的映射关系。 - **关联映射**:描述了不同POJO类之间的关联关系,例如一对多、多对多等。 #### 四、查询语言 Hibernate提供了丰富的查询语言支持...
Java中 PO VO BO DTO DAO 和 POJO 关系图