linkman

JPA的多表设计

拟墨画扇 提交于 2020-02-23 13:31:44
表之间关系的划分 数据库中多表之间存在着三种关系,如图所示。 从图可以看出,系统设计的三种实体关系分别为:多对多、一对多和一对一关系 。注意:一对多关系可以看为两种: 即一对多,多对一。所以说四种更精确。 明确: 我们今天只涉及实际开发中常用的关联关系,一对多和多对多。而一对一的情况,在实际开发中几乎不用。 1 在 JPA 框架中表关系的分析步骤 在实际开发中,我们数据库的表难免会有相互的关联关系,在操作表的时候就有可能会涉及到多张表的操作。而在这种实现了 ORM 思想的框架中(如 JPA ),可以让我们通过操作实体类就实现对数据 库表的操作。所以今天我们的学习重点是:掌握配置实体之间的关联关系。 第一步:首先确定两张表之间的关系。 如果关系确定错了,后面做的所有操作就都不可能正确。 第二步:在数据库中实现两张表的关系 第三步:在实体类中描述出两个实体的关系 第四步:配置出实体类和数据库表的关系映射(重点) 2 JPA 中的一对多 2.1 示例分析 我们采用的示例为客户和联系人。 客户:指的是一家公司,我们记为 A 。 联系人:指的是 A 公司中的员工。 在不考虑兼职的情况下,公司和员工的关系即为一对多。 2.2 表关系建立 在一对多关系中,我们习惯把一的一方称之为主表,把多的一方称之为从表。在数据库中建立一对多的关系,需要使用数据库的外键约束。 什么是外键? 指的是从表中有一列

day14_SQLite Python操作

久未见 提交于 2020-02-13 00:49:03
Xmind 笔记: 今日内容: conn = sqlite3 . connect ( 'addressbook.db' ) c = conn . cursor ( ) sql = "select * from LinkMan" result = c . execute ( sql ) for row in result : print ( row ) # 增加: sql = "insert into LinkMan values ('Mary','18933342222','1985-4-6',1)" c . execute ( sql ) conn . commit ( ) conn . close ( ) # 更新 sql = "update LinkMan set Mobile = '1893333222' where Name= 'Jason'" c . execute ( sql ) conn . commit ( ) # 删除 sql = "delete from LinkMan where Name='Mary'" c . execute ( sql ) conn . commit ( ) sql = "select * from LinkMan" c . execute ( sql ) list = c . fetchall ( ) row = c .

Hibernate_day03

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-29 02:43:58
一、今天内容 0 列表功能实现 1 表与表之间关系回顾 (1)一对多(客户和联系人) (2)多对多(用户和角色) 2 hibernate一对多操作 (1)一对多映射配置 (2)一对多级联保存 (3)一对多级联删除 (4)inverse属性 3 hibernate多对多操作 (1)多对多映射配置 (2)多对多级联保存(重点) (3)多对多级联删除 (4)维护第三张表 二、客户列表功能 1 sessionFactory已经关闭了,不需要关闭 2 dao里面代码 //使用hibernate实现查询列表 public List<Customer> findAll() { SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { //得到sessionFactory sessionFactory = HibernateUtils.getSessionFactory(); //得到session session = sessionFactory.openSession(); //开启事务 tx = session.beginTransaction(); //查询所有记录 Criteria criteria = session.createCriteria(Customer

springdata_多表关系中的一对多__小案例

偶尔善良 提交于 2019-12-01 06:57:30
一、创建maven工程,引入依赖和创建配置文件 依赖和配置文件参考,之前的博客《springdata——jpa》 二、创建实体类 1.customer1 package cn.dzl.jpa.entity; import javax.persistence.*; import java.util.HashSet; import java.util.Set; @Entity @Table(name="cst_customer1") public class Customer1 { //配置主键生成的策略 @GeneratedValue(strategy = GenerationType.IDENTITY) //配置主键使用的字段 @Id private long custId; private String custName; private String custSource; private String custIndustry; private String custLevel; private String custAddress; private String custPhone; //all代表所有情况下都关联操作, lazy表示懒加载,该属性不会马上从数据库加载 @OneToMany(cascade = CascadeType.ALL,fetch =

springData表关系:一对多

社会主义新天地 提交于 2019-11-28 05:45:53
一、编写实体类进行表关联 1、在一张表的关联属性上添加@OneToMany注解(关联属性用来记录多的一方的信息,是个集合,一般用set) 2、在另一个实体类的关联属性上添加@ManyToOne注解和 @JoinColumn(name="custid",referencedColumnName = "cust_id")注解 二、编写dao:两个dao都继承JpaRepository<实体类名,主键属性> 三、编写测试类(用法) package cn.lijun.jpa; import cn.lijun.jpa.dao.CustomerDao2; import cn.lijun.jpa.dao.LinkManDao; import cn.lijun.jpa.entity.Customer2; import cn.lijun.jpa.entity.LinkMan; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.Commit; import org.springframework.test.context