现在我正在制作一个非常简单的网站-大约5个页面。问题是,是否值得花时间集成某种数据库映射解决方案,还是最好只使用老旧的JNDI。我可能需要从数据库中读取/写入约十几件事情。我想我对这些技术有基本的了解,但仍需要参考文档。有其他人面临过这个决定吗?
编辑:对不起,我应该明确指定使用JNDI查找DB连接和JDBC执行操作。
简短的回答:取决于您想要支持的复杂程度。
长篇回答:
首先,ORM(对象关系映射 - 数据库映射,正如您所称 - )和JNDI(Java命名和目录接口)是两个不同的东西。
如您已经知道的那样,第一个用于将数据库表映射到类和对象。第二个提供资源的查找机制,它们可能是DataSources、Ejb、Queues或其他。
也许您指的是“JDBC”。
现在就您的问题而言:如果这么简单,可能没有必要实现ORM。最多可能有5-10张表格,并且操作非常简单。
可能只使用普通的JDBC就足够了。
如果您使用DAO模式,以后可以更改为支持ORM策略(如果需要)。
像这样:假设您有Employee表格
您手动创建Employee.java并包含所有数据库字段(这应该不会花费太长时间),以及一个具有诸如以下方法的EmployeeDaO.java:
+findById( id ): Employee
+insert( Employee )
+update( Employee )
+delete( Employee )
+findAll():List<Employee>
实现非常简单:
select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc
当您的应用程序变得过于复杂时,您可以更改DAO实现。例如,在“select”方法中,您可以更改代码以使用执行操作的ORM对象。
public Employee selectById( int id ) {
// Commenting out the previous implementation...
// String query = select * from employee where id = ?
// execute( query )
// Using the ORM solution
Session session = getSession();
Employee e = ( Employee ) session.get( Employee.clas, id );
return e;
}
这只是一个例子,在实际生活中,您可能会让抽象工厂创建ORM DAO,但这是不相关的。重要的是您可以从简单入手,通过使用设计模式,如果需要,稍后可以更改实现。
当然,如果您想学习这项技术,甚至可以从一个表格开始。
选择某个( ORM解决方案)还基本取决于您使用的技术。例如,对于JBoss或其他开源产品,Hibernate非常好。它是开源的,有很多资源可供学习。但是,如果您正在使用已经拥有Toplink(比如Oracle应用服务器)或者基础已经建立在Toplink之上的东西,则应该继续使用该框架。
顺便说一下,自从Oracle收购了BEA以来,他们表示他们将在现在称为“Oracle Weblogic应用服务器”的Kodo(Weblogic持久性框架)中用Toplink替换它。
我给您留下了一些资源,您可以在其中获取更多信息:
这是Hibernate的入门教程:
Toplink的官方页面:
最后,“我认为”JPA的好处是您可以稍后更改提供程序。
从简单开始,然后发展。
希望这有所帮助。
如果你没有计划对其进行扩展,那么它似乎对于非常简单的应用程序来说可能过度了。然而,似乎也值得在这个简单的应用程序中使用它们,这样下一次有东西可以使用它们时,你就能更好地理解它们的工作原理。
你是指普通的JDBC吗?如果你有时间,一个小项目可能是学习ORM框架的好机会。
不过,没有更多信息的话,很难提供具体的建议。
我的经验法则是,如果只是读取数据,我愿意使用JDBC,尽管我更喜欢使用一个空的Hibernate项目和SQLQuery来利用Hibernate的类型映射。一旦需要进行写操作,我就会选择Hibernate,因为设置几个属性然后调用save比逐个设置每个列要容易得多。当你不得不开始优化以避免对未更改的对象进行更新时,使用OR/M及其脏检查功能会更好。处理外键关系是另一个需要映射一次然后使用getter的迹象。相同的逻辑也适用于Toplink,尽管除非他们在我使用它的3年中添加了类似HQL的东西,否则Hibernate对于从纯SQL转换到ORM这种情况会更好。请记住,您不必映射每个对象/表,只需映射那些具有明显优势的对象/表即可。根据我的经验,大多数没有使用现有ORM的项目最终都会构建一个新的ORM,这是一个坏主意。
学习ORM的最佳方式是从一个小项目开始。从这个项目开始。
一旦你掌握了它,你会在所有项目中使用ORM。
没有什么比ORM更微不足道的了。在完成前几个项目后,你会发现自己无法用其他方式工作。ORM映射通常比任何其他工作方式更有意义。
看看这里的各种Toplink指南,它们有介绍、示例、场景等。