Yat*_*oel 34 java dao hibernate jpa jdbc
我正在开发一个Java桌面应用程序,但在为持久层选择技术方面存在一些困惑.
直到现在,我一直在使用JDBC进行数据库操作.现在,最近我学习了Hibernate和JPA,但我仍然是这些技术的新手.
现在我的问题是如何从我的Java桌面应用程序中使用以下内容?
JPA
过冬
JDBC
DAO
你的任何其他建议......
我知道他们没有最好的选择,这完全取决于项目的复杂性和重新发现,所以下面是我项目的要求
==================================== EDITED ============= ==========================
根据以下答案,我想使用JPA,以防止自己编写特定于供应商的SQL代码.
但是我在Java Persistence API中提到的JPA中存在一些问题
duf*_*ymo 52
这是我的看法:
这不是一个复杂的应用程序.它只包含5个表(和5个实体)
任何这些都可以,但JDBC将是最简单的.所有其他的都是建立在JDBC之上的.
我想让我的代码变得灵活,以便我以后可以轻松地更改数据库
模式更改将在所有技术中具有类似的效果.
应用程序的大小应尽可能小,因为我必须通过互联网将其分发给我的客户.
使用JPA或Hibernate将需要增加部署大小的JAR.JDBC将最小化这一点.
它必须可以自由地用于商业开发和分销.
查看所有技术的许可证.不应该是任何一个问题.
仅供参考:可以编写通用的DAO接口:
package persistence;
import java.io.Serializable;
import java.util.List;
public interface GenericDao<T, K extends Serializable>
{
T find(K id);
List<T> find();
List<T> find(T example);
List<T> find(String queryName, String [] paramNames, Object [] bindValues);
K save(T instance);
void update(T instance);
void delete(T instance);
}
Run Code Online (Sandbox Code Playgroud)
如果你的对象用你的五张桌子1:1映射,我会说JPA是过度杀伤力的.
您的应用目前是3MB JAR的订单吗?如果不是,则Hibernate或JPA的大小将增加一倍以上.您可以准确量化多少.并且有多个JAR,因为它们都有依赖关系.
YAGNI说你应该保持简单.这是五张桌子!
更改供应商,如果正确执行,则意味着切换JDBC驱动程序JAR,更改驱动程序类名称以及添加新连接URL - 无论您选择何种技术,都必须执行此操作.
我发现数据库不会彻底改变.您将更改架构,但整个供应商?不太可能,特别是如果你有几个客户.制作用户基础交换机数据库将是一个很大的不便.
您打算随身携带哪一个?HSQL还是需要安装MySQL的东西?这是一个更为关注的问题.
JPA当然要走的路是你想要使用对象关系映射 - 它的实现是不可知的(意味着你可以将它与Hibernate,Toplink等一起使用),它是事实上的标准.Hibernate有一个更丰富的功能集,但这是一个非标准的解决方案 - 很多人使用它...我个人总是使用由Hibernate支持的JPA.我试图远离hibernate特定的东西,但如果需要它 - 它就在我身边.
使用JPA/Hibernate这样的框架来表示5个表可能有点过分.您的应用程序将大约5MB,并将消耗更多的内存.您可以选择使用与DAO配对的JDBC.
由于JDBC使用的是特定于供应商(数据库)的SQL,因此您可能会遇到问题,因为您计划使用不同的数据库.JPA在这方面具有明显的优势.
无论你选择什么,都不会出错 - 你需要问自己,大多数是增加的大小和内存消耗是一个问题,你是否愿意编写样板DAO JDBC代码.我一般都讨厌这个:-)
归档时间: |
|
查看次数: |
35376 次 |
最近记录: |