首页 > IT职业 > IT职场 > hibernate学习笔记(2)
主要内容:
1.hibernate中 单向一对多关联关系
题外话:
多对一和一对多,本质是一回事。不同的角度而已
一、在数据库里建表
1.建立student表,项目有,id,name,sex,gid。其中把id设为主键,但不设立自增长
2.建立grade表,项目有,gid,gname,gdesc。其中把gid设为主键,但不设立自增长
3.在多方,也就是student表里,建立与grade表的gid的外键关系
二、写持久化类
新建grade.java和student.java两个类
1.序列化
implements Serializable接口,获取序列号
2.添加私有化的id、name等变量,并实现setget方法
三、给各持久化类生成映射文件
用hibernate工具生成下面两个映射文件
Grade.hbm.xml
Student.hbm.xml
具体如下,注意配置:
Grade.hbm.xml
<!-- 在一方配置一对多关联关系--> Student.hbm.xml
四、配置hibernate.cfg.xml
这个文件在第二步配置也可以。最重要的是配置上面建好的两个映射文件
<!-- 数据库用户名-->root <!-- 数据库密码-->root <!--mysql的驱动下载 -->com.mysql.jdbc.Driver <!--指定数据库名。我创建的是testmysql。后面指定了字符编码,防止数据出现乱码 -->jdbc:mysql:///one2many?userUnicode=true&characterEncoding=UTF-8 <!-- 数据库方言-->org.hibernate.dialect.MySQLDialect <!-- 在控制台显示sql语句-->true <!-- 指定自动更新数据表。也可以配置create:这是自动生成,会覆盖原来数据-->update <!--
true
--><!-- 配置映射文件 --> 五、写个测试类来验证一下
写测试类之前,因为session会经常被调用,为了以后调用方便,所以先写个工具类。
HibernateUtil.java
public class HibernateUtil {
private static SessionFactory sessionFactory;
private static Session session;
static{
// 创建配置对象
Configuration configure = new Configuration().configure();
// 创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configure.getProperties())
.buildServiceRegistry();
// 创建会话工厂
sessionFactory = configure.buildSessionFactory(serviceRegistry);
}
public static Session getSession(){
// 会话对象
session = sessionFactory.openSession();
return session;
}
public static void closeSession(){
if (session.isOpen() || session!=null) {
session.close();
}
}
}
然后写测试类
创建一个班级和两个学生,看看能不能插入到数据库中。结果OK
Test.java
public class Test {
public static void main(String[] args) {
Test t=new Test();
t.add();
}
public void add(){
Grade grade=new Grade("java一班","优秀班级");
Student stu1=new Student("杨洋","男");
Student stu2=new Student("李丽","女");
grade.getStudent().add(stu1);
grade.getStudent().add(stu2);
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
session.save(grade);
session.save(stu1);
session.save(stu2);
transaction.commit();
HibernateUtil.closeSession();
}
} 来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2041/viewspace-2799536/ ,如需转载,请注明出处,否则将追究法律责任。