hibernate--关联关系的CRUD
来源:互联网 发布:mac 搜狗输入法切换 编辑:程序博客网 时间:2024/06/05 20:22
---------------------------------------------------------
多对一单向关联:
Group.java:
package com.bean;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {private int id;private String name;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}User.java:
package com.bean;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;@Entity@Table(name="t_user")public class User {private int id;private String name;private Group group;@ManyToOne(cascade={CascadeType.ALL}) //cascade---级联操作public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/user</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="current_session_context_class">thread</property> <mapping class="com.bean.Group"/> <mapping class="com.bean.User"/> <!-- <mapping resource="com/bean/User.hbm.xml"/> <mapping resource="com/bean/Group.hbm.xml"/>--> </session-factory></hibernate-configuration>测试:
package com.test;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistryBuilder;import org.hibernate.tool.hbm2ddl.SchemaExport;import com.bean.Group;import com.bean.User;import com.bean.User2;public class Test_W_H { public static void main(String []args) { Configuration cfg = new Configuration(); cfg.configure(); //加载hibernate配置文件 SessionFactory sessionFactory = cfg.buildSessionFactory(new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry()); Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); //开启事务 User user = new User(); user.setName("代里"); Group group = new Group(); group.setName("team1"); user.setGroup(group); session.save(user); session.getTransaction().commit(); // 事务提交 System.out.println("the end");}}
-------------------------------------------------------------------------
一对多双向关联:
在Group.java增加属性:
private Set<User> users = new HashSet<User>();@OneToMany(mappedBy="group",cascade={CascadeType.ALL} )public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}
session.beginTransaction(); //开启事务 User user1 = new User(); user1.setName("代里"); User user2 = new User(); user2.setName("张三"); Group group = new Group(); group.setName("team1"); group.getUsers().add(user1); group.getUsers().add(user2); user1.setGroup(group); user2.setGroup(group); session.save(group); session.getTransaction().commit(); // 事务提交
-----------------------------------------------------------------------
read读取:
OneToMany:需要配置fetch:(fetch默认状态为lazy)
@OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.EAGER )
ManyToOne则不需要配置,因为fetch默认状态为eager
--------------------------------------------------------------------------------------------
级联删除(防止级联删除效应):
1、取消级联关系
User user = (User)session.get(User.class, 7); user.setGroup(null); session.delete(user); session.getTransaction().commit(); // 事务提交2、设置Hql来控制。
session.createQuery("delete from User u where u.id = 8").executeUpdate();
阅读全文
0 0
- hibernate--关联关系的CRUD
- hibernate 关联关系CRUD
- Hibernate之关联关系的CRUD
- Hibernate关联关系中的CRUD
- 13hibernate hibernate关联关系的CRUD(增删改查)
- Hibernate中关联关系的CRUD(增删改查)
- Hibernate关联关系中的CRUD之C
- Hibernate关联关系中的CRUD之R
- hibernate-关联关系中的crud-13
- Hibernate——关联关系的CRUD(增删改查)一
- Hibernate——关联关系的CRUD(增删改查)二
- Hibernate的关联关系
- Hibernate学习笔记(六)----关联关系中的CRUD
- hibernate--关系映射CRUD
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- OpenGL ES 学习日记(1)
- Redis基本命令
- EU4-51: Describing a business situation
- HDU-1564-Play a game 【找规律】
- SSH中实体类的变量用关键字导致了建表失败
- hibernate--关联关系的CRUD
- 音频参数概念详解
- 利用二叉树层序遍历输出每层数据
- Java高并发,如何解决,什么方式解决
- 求这个字符串中的最大的数字字符串
- java之正则表达式
- Java中hashcode
- 关于UCP和TCP的形象理解
- 秋招来袭