药膏!
关于SO 的另一个问题/答案的一部分(以及声称相同的其他陈述):
如果您通过JPA更新数据库模式(通常不是一个好习惯)
您是否应该使用JPA实现来生成数据库模式?
无论如何,我必须自己模拟实体和关系.我需要定义约束,例如notnull,主键和外键,数据类型和大小.
假设正在使用的JPA实现在其DDL模式创建代码中没有任何缺陷,并且假设我确实正确地指定了所有JPA约束,关系等,那么由JPA实现创建的db模式应该完全相同 - 如果不是更好 - 作为我自己手工制作的架构,对吧?
这不包括"特殊情况",例如(业务逻辑 - )特定的INSERT触发器等,因为这些根本不能由JPA实现生成(据我所知,如果我错了,请纠正我).
你对此有何看法?
我现在首先手工编写我的数据库模式,然后设置JPA约束,关系等,让JPA实现也创建一个数据库模式.然后我比较两个模式,看看我是否正确完成了设置.这当然意味着我还必须指定与我手工模式相同的列名等.
使我的问题更加准确; 我不会盲目相信ORM框架为我生成架构.我宁愿知道模式在我的脑海中如何看待,然后配置框架以匹配它.
我想你可以手工创建更多/最有效的架构,但毕竟我需要(或者更愿意)将它们与ORM框架一起使用.因此,虽然我不应该这样做,但在创建数据库模式时,我需要牢记ORM框架的局限性.
因此,我使用ORM框架以便不必关心RDBMS细节,让我的应用程序使用特定于RDBMS的DDL创建模式的重点是什么?
如果我必须使用一些现有的和异乎寻常的模式,我不需要(重新)创建模式,以及我可能无法使用这样的通用工具作为ORM框架.
阿罗哈嘿!
我已经使用了JPA注释,现在我想使用JSR-303注释来验证属性.
我的问题是,他们彼此之间的互动有多好?
如果我使用@Basic(optional=false)或@NotNull,我还需要使用nullable=false等吗?
我还没有决定使用哪个验证器实现,例如hibernate-validator或oVal(你也可以建议别人.我知道oVal不是JSR-303实现,但它映射了大多数注释).
oVal手册(见上文)指出某些JPA注释也将被翻译成oVal注释.Hibernate-validator 具有类似的机制.
一些搜索结果声称Bean Validation和JPA正式重叠,但我还没有想出具体的方法.
喂!
尽管我只有少量课程,但我想听听您对软件包的建议。
我确实有一个GenericDAO接口,一个抽象GenericHibernateDAO类,一个UserDAO接口,最后是一个UserDAOHibernate类。它们大致按它们的一般程度排序。
我肯定会添加更多的接口,比如UserDAOand UserDAOHibernate,所以他们需要自己的包。
我还有一个GenericEntity接口、一个抽象LongEntity类(顺便说一句,它需要一个更好的名字)和User类。我会添加更多的类,比如稍后的User类。
你会推荐多少个包,你会使用哪些名称?