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中文参考文档
分享到:
相关推荐
即在Hibernate配制文件中进行配制: <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect <prop key="hibernate.show_sql">false !-- Create/update the database tables automatically ...
通过freemaker模版生成java后台包括service层,dao,hibernate配制文件
Hibernate方法的使用!从它的XML配制,SESSION然后就是Criteria 查询的使用
最近在做个项目,用的是webwork+spring+hibernate,在网上看了不少webwork+spring的配制方式,大多都是老的配制方式,比如2.1.7的,webwork2.2.4新加了很多功能,和spring的配制也简单了很多,我做了一个简单的登录...
struts2 + hibernate + spring 各种配制文件详解
struts框架搭建 hibernate单例简单配制 实现简单的数据录、改、查、删
主要介绍了Hibernate 主清单文件配制的详细介绍的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
hibernate技术ppt,简单的较少hibernate原理,配制方法,用途以及相关的技术。
一组很好的WEB项目配制文件modle,有struts,hibernate等!
闲来无事,发现hibernate4悄然问世了,写了个简单的程序,初学都可以看下配制。
用添加三种支持,。。。。 你要在配制文件中配制,才能依赖注入。。。
此文档为环境变量配置,其中包含了 jdk. mysql ,. maven . hibernate 的常用配置方法,仅供大家参考
在SSH中实现以下功能时, 需要将Tomcat中站点目录下/WEB-INF/lib 中的asm-2.2.3.jar和commons-collections-2.1.1.jar 文件删除,否则会引起类冲突 分离配置文件: 在src目录下创建多个...文件中配制的语法与原来一样
此文档讲解配制Spring2.5+Hibernate3.2+xfire开发webservice工程(有截图)
服务器等软件的配制 Jsp中文乱码解决方案 上传与下载 Hibernate 参数设置.txt MD5_Encoding.java Struts2中三种表达式符号的用法.txt
1. S2sh框架整合相关说明与使用 1.1 jar包安装 所有jar见目录lib 如果采用手工配制 创建一个web project 点击工程右键菜单 ->Myeclipse->add hibernate capabilities ....
环境配制过程:安装好J2SDK1.6后。在MyEclipse6.0中选择新建J2EE Project- >Web Project,并在Web Project中Add Struts和Hibernate3.1。 1.2.5 JSP SUN JSP是Java Server Pages的缩写,是由Sun公司倡导、众多业领先的...
从最基本的配制讲起,通过简单易懂的例子,深入浅出,剖析SSH框架技术的精要,适合初学者