Hibernate七部曲(五)一对多关系映射
来源:互联网 发布:安卓qq2016协议源码 编辑:程序博客网 时间:2024/05/22 17:21
本节实现一对多的关系映射,将多个user和一个group绑定起来做持久化
项目结构:
建立实体类User.java
package cn.com.lt.onetomany;public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
建立实体类Group.java
package cn.com.lt.onetomany;import java.util.Set;public class Group { private int id; private String groupname; private Set<User> users; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getGroupname() { return groupname; } public void setGroupname(String groupname) { this.groupname = groupname; } public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; }}
配置User.hbm.xml,当然我们也可以使用EJB注解,有兴趣的小伙伴自己尝试一下
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- 映射对应的 package --><hibernate-mapping package="cn.com.lt.onetomany"> <!-- class 和数据库中 table 对应(如果没有这个表则新建) --> <class name="User" table="user_table"> <!-- id 主键,设为自增 --> <id name="id" column="user_id"> </id> <property name="username" column="user_username"></property> <property name="password" column="user_password"></property> </class></hibernate-mapping>
配置Group.hbm.xml,在这里将User绑定进来
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- 映射对应的 package --><hibernate-mapping package="cn.com.lt.onetomany"> <!-- class 和数据库中 table 对应(如果没有这个表则新建) --> <class name="Group" table="group_table"> <id name="id" column="group_id"> </id> <property name="groupname" column="group_name"></property> <!-- 重点关注这里 --> <!-- Set 为我们在 Group.java 中定义的集合 --> <set name="users" > <!-- 外键名称 --> <key column="group_id" ></key> <!-- 一对多关系对应的class--> <one-to-many class="cn.com.lt.onetomany.User"/> </set> </class></hibernate-mapping>
最后配置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-configuration> <session-factory> <!-- Database connection settings --> <!-- 表示使用 oracle数据库驱动类 --> <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <!-- jdbc 的连接 url 和数据库(使用我们之前新建的 hibernate)--> <property name="connection.url">jdbc:oracle:thin:@172.18.1.252:1521:ora9is</property> <!-- 数据库用户名 --> <property name="connection.username">test</property> <!-- 密码(这里为空) --> <property name="connection.password">test</property> <!-- 数据库使用的方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Echo all executed SQL to stdout --> <!-- 设置 控制台输出 sql 语句 为真 --> <property name="show_sql">true</property> <!-- 设置格式为 sql --> <property name="format_sql">true</property> <!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 --> <property name="hbm2ddl.auto">update</property> <!-- 映射文件 --> <mapping resource="cn/com/lt/onetomany/User.hbm.xml"/> <mapping resource="cn/com/lt/onetomany/Group.hbm.xml"/> </session-factory></hibernate-configuration>
简单测试:
package cn.com.lt.test;import java.util.HashSet;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;import cn.com.lt.onetomany.Group;import cn.com.lt.onetomany.User;public class TestOneToMany { Configuration cfg = new Configuration().configure(); @SuppressWarnings("deprecation") SessionFactory sf = cfg.buildSessionFactory(); Session session = sf.openSession(); @Test public void test1(){ session.beginTransaction(); //新建一个lol群组 Group group = new Group(); group.setGroupname("lol_group"); group.setId(1); //新建两个用户 Set<User> users = new HashSet<User>(); //第一个user实例 User user1 = new User(); user1.setId(1); user1.setUsername("ez"); user1.setPassword("qwer"); //第二个 User user2 = new User(); user2.setId(2); user2.setUsername("suona"); user2.setPassword("qwqw"); //将两个user放进set集合users里 users.add(user1); users.add(user2); //将users集合放进group里 group.setUsers(users); //保存相关对象 for(User user:users){ session.save(user); } session.save(group); session.getTransaction().commit(); session.close(); sf.close(); }}
0 0
- Hibernate七部曲(五)一对多关系映射
- Hibernate(五)Hibernate一对多关系映射
- hibernate 映射关系—关系映射(一对多)
- Hibernate关系映射(3) 一对多关系映射
- Hibernate 一对多关系映射
- hibernate一对多关系映射
- Hibernate一对多关系映射
- Hibernate映射一对多关系
- Hibernate一对多关系映射
- Hibernate关系映射一对多
- hibernate一对多关系映射
- Hibernate关系映射(五)一对多、多对一双向关联@OneToMany @OneToMany Annotation方式
- Hibernate一对多关系映射(双向映射)
- Java程序员从笨鸟到菜鸟之(五十四)细谈Hibernate(五)Hibernate一对多关系映射
- Java程序员从笨鸟到菜鸟之(五十四)细谈Hibernate(五)Hibernate一对多关系映射
- Hibernate 关系映射 (一对一,一对多,多对多)
- Hibernate关联关系映射(一对多/多对一)
- hibernate之映射关系一对多(自身关联)
- 『 Spark 』10. spark 应用程序性能优化|12 个优化方法
- 仿QQ聊天Listview横向拖动删除等操作
- jquery+Jcrop+servlet图片上传裁剪选择保存实例
- easyui datagrid 动态修改查询参数
- ElasticSearch实战
- Hibernate七部曲(五)一对多关系映射
- linux系统下(x86_64)安装jdk 1.6(jdk-6u45-linux-x64.bin)
- .net redis demo
- redis 充当消息队列
- 文件上传下载
- json数据格式设置以及使用
- Docker学习(4)-----利用Docker搭建SSH server/Nginx Server/Mysql Server
- Spark的性能调优(1)
- 浅谈医院为什么需要CRM客户管理