springboot中jpa的entity类的总结

1、 在springboot的entity类中声明变量时禁止使用如“desc”、“user”等关键词汇。

2、主键自增长的使用

	@Id
	@SequenceGenerator(name = "devicegroup_gid_seq", allocationSize = 1, initialValue = 1, sequenceName = "devicegroup_gid_seq")
	@GeneratedValue(generator = "devicegroup_gid_seq", strategy = GenerationType.SEQUENCE)
	@Column(name = "gid", unique = true, nullable = false)
	public long getGid() {
		return this.gid;
	}

	private void setGid(long gid) {
		this.gid = gid;
	}

3、多对一的使用:

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "uid")
    public User getUser() {
        return this.user;
    }

    public void setUser(User user) {
        this.user = user;
    }

4、一对多的使用:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "deviceGroup")
    public Set<Device> getDevices() {
        return this.devices;
    }

    public void setDevices(Set<Device> devices) {
        this.devices = devices;
    }

mappedBy表示声明自己不是一对多的关系维护端,由对方来维护,是在一的一方进行声明的。mappedBy的值应该为一的一方的表名。

5、联级操作:

注意:联级操作必须和mappedBy一起使用到@OneToMany上才会起效。

PA允许您传播从父实体到子级的状态转换。为此,JPA javax.persistence.CascadeType定义了各种级联类型:

ALL 
级联所有实体状态转换

PERSIST 
级联实体持久化操作。

MERGE 
级联实体合并操作。

REMOVE 
级联实体删除操作。

REFRESH 
级联实体刷新操作。

DETACH 
级联实体分离操作。

此外,CascadeType.ALL将会传播任何Hibernate特定的操作,它由org.hibernate.annotations.CascadeType枚举定义:

以下示例将使用以下实体来解释上述一些级联操作:

@Entity
public class Person {

    @Id
    private Long id;

    private String name;

    @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
    private List<Phone> phones = new ArrayList<>();
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot,集成JPA需要通过配置来实现。以下是一个示例: ```java @Configuration @EnableJpaRepositories(basePackages = {"com.example.demo.repository"}) //JPA仓库的扫描路径 @EnableTransactionManagement //开启事务管理 public class JpaConfig { @Autowired private DataSource dataSource; @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource); em.setPackagesToScan("com.example.demo.entity"); //JPA实体扫描路径 JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); return em; } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); return transactionManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); } } ``` 在配置,我们首先使用`@EnableJpaRepositories`注解指定JPA仓库的扫描路径,这样Spring容器就能够自动创建JpaRepository实现的实例。 接着,使用`@EnableTransactionManagement`注解开启事务管理。 然后,我们定义了`entityManagerFactory`方法,用于创建`EntityManagerFactory`实例。在这个方法,我们设置了数据源和JPA实体的扫描路径,并使用`HibernateJpaVendorAdapter`作为JPA厂商适配器。 接下来,我们定义了`transactionManager`方法,用于创建`PlatformTransactionManager`实例,并将`EntityManagerFactory`实例设置为其属性。 最后,我们定义了`exceptionTranslation`方法,用于处理JPA产生的异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值