Hibernate 配制简介(一对多)
一、配制步骤
a.首到http://www.hibernate.org/ 下载hb最新版本,与数据库驱动包一起另载到项目下;
b.在项目目录下创建hibernate.cfg.xml文件--这是hibernate控制的核心;
c.在数据库中建两个表user 与 blog;
d.两个表对应的pojo类;
e.编写每个pojo类对应到数据库中每个表的映射文件;
f.编写hb中的Session对象的工具类
g.编写user与blog的Dao类;
h.编写测试类进行测试;
二、具体的代码实现
1、hibernate.cfg.xml文件
<?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 配置 -->
<hibernate-configuration>
<session-factory>
<!--让hb在运行时显示实际执行的sql语句 -->
<property name="show_sql">true</property>
<!-- 使显示的sql格式化 -->
<property name="format_sql">true</property>
<!-- 设定sql方法,使用的是mySQL -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- JDBC驱动类的名字 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--数据库连结串配置 -->
<property name="connection.url">jdbc:mysql://localhost:3306/bbs</property>
<!--数据库用户名配置 -->
<property name="connection.username">root</property>
<!-- 数据库密码配置 -->
<property name="connection.password">netjava</property>
<!-- user类的映射文件路径 -->
<mapping resource="cn/netjava/pojo/user.hb.xml"/>
<!-- blog类的映射文件路径 -->
<mapping resource="cn/netjava/pojo/blog.hb.xml"/>
</session-factory>
</hibernate-configuration>
2、两个对应的pojo类
public class User {
private int id;
private String name;
private String pwd;
private List<Blog> blogs;
// 对应的set,get方法;
.........
}
public class Blog {
private int id;
private User user;// 多对一关联到的父对象
private String title;
private String content;
// 对应的set,get方法;
.........
}
3、相应的映射文件
user.hb.xml
<?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>
<class name="cn.netjava.pojo.User" table="user">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" column="name" />
<property name="pwd" column="pwd" />
<!-- 映射Userinfo对象与Bloginfo对象的一对多关系,以bag方式映射,按id顺排序,并延迟加载 -->
<bag name="blogs" table="blog" order-by="id asc" lazy="false"
cascade="save-update,persist">
<key column="id_user"/>
<one-to-many class="cn.netjava.pojo.Blog"/>
</bag>
</class>
</hibernate-mapping>
blog.hb.xml
<?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>
<class name="cn.netjava.pojo.Blog" table="blog">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="title" column="title" />
<property name="content" column="content" />
<!--设定Blog对象与User对象的多对一关系 -->
<many-to-one name="user"
column="id_user"
class="cn.netjava.pojo.User"
cascade="all"
outer-join="true" />
</class>
</hibernate-mapping>
4、获取hb中的Session对象的工具类
public class HBUtils {
// 取得根据hibernate.cfg.xml中配置的数据库的一个Session对象;
// 这个Session对象类似与java.sql.connection对象;
public static Session getSession() {
return sessionFactory.openSession();
}
//静态块,用于从hibernate.cfg.xml配置中初始化sessionFactory对象
static {
try {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
private static SessionFactory sessionFactory;
}
5、两个Dao类
public class Daouser {
// 保存一个用户对象到数据库,保存成功后,返回id
public int saveUserInfo(User user) {
org.hibernate.Session session = HBUtils.getSession();// 得到session对象
org.hibernate.Transaction tx = session.beginTransaction();
tx.begin();// 取得一个事务对象,开启事务
session.save(user);// 保存对象到数据库
tx.commit();// 提交事务。
session.close();
return user.getId();
}
// 从数据库中取得指定id的用户对象
public User getUserinfoById(int id) {
org.hibernate.Session session = HBUtils.getSession();
Object obj = session.get(cn.netjava.pojo.User.class, id);
session.close();
return (User) obj;
}
}
(下一个Dao类类似)
6、Test
public class Test {
public static void main(String args[]) {
User user = new User();// 新建一个User对象
user.setPwd("撒旦法");
user.setName("周");
Blog bl = new Blog();// 新建一个Blog对象
bl.setTitle("userBlog");
bl.setContent("blog");
bl.setUser(user);// 所属用户
Daoblog da = new Daoblog();// 保存Blog对象到数据库
int id = da.saveBlog(bl);
System.out.println("日志对象连同用户对象保存成功,id: " + bl.getId());
}
引用
Hibernate中文参考文档
分享到:
相关推荐
最近在做个项目,用的是webwork+spring+hibernate,在网上看了不少webwork+spring的配制方式,大多都是老的配制方式,比如2.1.7的,webwork2.2.4新加了很多功能,和spring的配制也简单了很多,我做了一个简单的登录...
Hibernate是一种流行的Java持久性框架,它提供了一种方便的方式来实现对象关系映射(ORM)和持久化。本文将详细介绍Hibernate主清单文件hibernate.cfg.xml的配置方式和内容,帮助读者更好地理解和运用Hibernate进行...
在IT行业中,SSH框架是指Struts2、Hibernate和Spring三个开源框架的组合,它们共同构建了一个强大的企业级应用开发平台。SSH框架的配置文件是理解并有效使用这三个框架的关键,下面我们将逐一解析这些配置文件的主要...
本资源包“常用的WEB项目配制文件model”包含了Struts、Hibernate、Java和Spring框架的一些关键配置文件,这些都是构建高效、可扩展的Web应用不可或缺的部分。接下来,我们将深入探讨这些框架以及它们的配置文件。 ...
- **Hibernate框架**:Hibernate利用注解来描述实体类与数据库表之间的映射关系,使得开发者无需编写复杂的XML配置文件即可实现持久化操作。 综上所述,SSH框架中的注解配置为开发者提供了一种更加简洁高效的方式来...
此文档为环境变量配置,其中包含了 jdk. mysql ,. maven . hibernate 的常用配置方法,仅供大家参考
Spring框架提供了强大的事务管理功能,能够方便地与多种数据库交互,支持不同的数据访问技术如JDBC、Hibernate等。本文将详细介绍Spring事务配置中的五种方法,并结合示例来探讨每种方法的特点。 #### 二、Spring...
3. **数据持久化**:利用 JPA 或 Hibernate,你可以轻松地在 JBoss 中实现数据库的数据持久化操作。 4. **JMS 集成**:JBoss 内置了 JMS 服务,可以实现消息队列和发布/订阅模型,实现异步处理和解耦。 5. **...
它包含了多种开发工具,如支持HTML、CSS、JavaScript、SQL、Hibernate等,并且集成了多种服务器支持,如Tomcat、WebLogic等。 7. **Tomcat**:一个轻量级的Java Servlet容器,也是Java Web应用服务器,常用于开发和...
1. S2sh框架整合相关说明与使用 1.1 jar包安装 所有jar见目录lib 如果采用手工配制 创建一个web project 点击工程右键菜单 ->Myeclipse->add hibernate capabilities ....
- 添加必要的库文件,例如`hibernate3.2`等至`base_domain\lib`目录。 #### 三、打包并部署EAR文件 1. **创建EAR文件**: - 创建一个名为`TellerAPP`的目录,用于存放EAR文件。 - 在该目录下创建`META-INF\...
在微生物实验方面,我掌握了消毒杀菌的基本操作,如培养基配制、菌种转接等,并协助进行了相关实验,这不仅增强了我的实验室操作能力,也加深了对消毒剂作用原理的理解。 总结试用期的体验,我意识到自身在经验和...
总之,JdbcTemplate在SpringBoot中提供了一种轻量级的数据库访问方式,虽然功能不如ORM框架如Hibernate或MyBatis强大,但其简洁性和灵活性使得它在一些简单场景下成为不错的选择。学习JdbcTemplate可以帮助我们理解...