这是一个开放性的问题。我将开始一个新的项目,正在寻找不同的orm与数据库访问集成。
你有最喜欢的吗? 有什么你建议不要碰的吗?
这是一个开放性的问题。我将开始一个新的项目,正在寻找不同的orm与数据库访问集成。
你有最喜欢的吗? 有什么你建议不要碰的吗?
当前回答
当我在编写一个中等大小的JavaSE应用程序时,我对Avaje Ebean有过很好的体验。
它使用标准JPA注释来定义实体,但公开了一个更简单的API(没有EntityManager或任何附加/分离实体之类的废话)。它还允许您在必要时轻松使用SQL查询或事件纯JDBC调用。
它还为查询提供了一个非常好的流动和类型安全的API。你可以这样写:
List<Person> boys = Ebean.find(Person.class)
.where()
.eq("gender", "M")
.le("age", 18)
.orderBy("firstName")
.findList();
其他回答
我已经停止使用orm了。
原因并不是这个概念有什么大缺陷。Hibernate工作得很好。相反,我发现查询的开销很低,我可以将大量复杂的逻辑放入大型SQL查询中,并将大量处理转移到数据库中。
因此,请考虑只使用JDBC包。
没有,因为ORM占用了太多的控制权,而且好处很小。当您必须调试使用ORM导致的异常时,所节省的时间很容易被浪费掉。此外,orm不鼓励开发人员学习SQL和关系数据库的工作方式,并将其用于自己的利益。
Hibernate,因为它基本上是Java中事实上的标准,并且是创建JPA的驱动力之一。Spring对它有很好的支持,几乎每个Java框架都支持它。最后,GORM是一个非常酷的包装器,它使用Groovy做动态查找器等。
它甚至被移植到。net (NHibernate),所以你也可以在那里使用它。
Eclipse Link,有很多原因,但值得注意的是,我觉得它比其他主流解决方案的膨胀要小(至少不那么让人头疼)。
哦,Eclipse Link已被选为JPA 2.0的参考实现
冬眠,因为它:
是稳定的-存在了这么多年,它没有任何大的问题 规定了ORM领域的标准 实现标准(JPA),并对其进行口述。 网上有很多关于它的信息。有许多教程,常见问题的解决方案等 功能强大—您可以将非常复杂的对象模型转换为关系模型。 它支持任何主要和中型RDBMS 一旦你学会了它,就很容易使用
关于为什么(以及何时)使用ORM的几点:
you work with objects in your system (if your system has been designed well). Even if using JDBC, you will end up making some translation layer, so that you transfer your data to your objects. But my bets are that hibernate is better at translation than any custom-made solution. it doesn't deprive you of control. You can control things in very small details, and if the API doesn't have some remote feature - execute a native query and you have it. any medium-sized or bigger system can't afford having one ton of queries (be it at one place or scattered across), if it aims to be maintainable if performance isn't critical. Hibernate adds performance overhead, which in some cases can't be ignored.