我是Spring/Springboot的新手,在教程中看到了关于用于表示数据库对象的模型类的不同方法。我只是想知道什么时候使用哪个合适?
方法1:
为用户对象建模的基本类
public class User {
private final UUID id;
// other fields
public User(UUID id, <other fields>) {
this.id = id;
// set other fields
}
在存储库层,我们可能有一个类似的DAO
@Repository
public interface UserDao {
public int createUser(UUID id, <other fields>);
// other CRUD operations
}
当用户没有输入有效的UUID(或不存在(时,默认方法可以通过调用UUID.randomUUID()
来插入它
方法2:
我们没有使用UUID作为唯一标识符,而是使用Hibernate/JPA之类的东西,在模型包中的User类上使用@Entity注释,并使用@Id 注释PK字段
@Entity
public class User {
@Id
private final long id;
// other fields
}
@Id注释是Hibernate中最常用的方法。这将把JavaString/BigDecimal/long属性映射到一个标识符。使用它,您可以使用指定四种生成策略——AUTO、IDENTITY、SEQUENCE和TABLE。
UUID是在您希望主键全局唯一时使用的。我可以想出几个场景,你可能想要这个-
- 您在多个数据库中有数据,并且您的密钥需要在不同的数据库中是唯一的
- 甚至在将记录保存在数据库中用于特定业务目的之前,您就需要生成的id值
但缺点是,UUID很长,在存储空间方面可能会花费更多。