- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hibernate产生的必要性
我们所开发的所有项目中,对持久性数据的管理,已经成为一个关键步骤。同样,持久化操作的效率,也就成为衡量一个项目好坏的主要标准之一。
在传统的项目开发中,持久化操作主要分为以下几种方式:
对象序列化
对象-关系映射
对象数据库
对象序列化技术主要采用的是Java IO 类库中的类来完成的,它可以将一个内存中的对象转换成二进制blob,然后将它写入硬盘中。在J2EE领域中,有状态会话Bean是对象序列化的一个典型案例。EJB容器可以将一个用户暂时不操作的Bean实例,保存到硬盘,此过程称为钝化(也叫对象冷藏),让用户再次请求该Bean实例的时候,再将其从硬盘还原回内存,此过程成为激活(也叫对象解冻)。那么在这样一个过程中,对象被从内存转移到硬盘,又从硬盘还原回内存,这样折腾了一大圈,我们所关注的什么?是状态,也就是对象属性值,因为这才是对象的特征,序列化的原则要保证对象在冷冻和解冻过程中,状态不能发生改变,否则这个过程就是不具备任何意义的。它的底层代码实现,可以通过以下这个示例程序加以说明:
import java.io.*;
class MyObject implements java.io.Serializable{
private Stirng name;
public void setName(String name){this.name=name;}
public String getName(){return this.name;}
}
class SaveObject{
public static void main(String args[]){
try{
FileOutputStream fout=new FileOutputStream(“obj.ser”);
ObjectOutputStream obj=new ObjectOutputStream(fout);
MyObject myobj=new MyObject();
myobj.setName(“序列化的对象状态”);
obj.writeObject(myobj);
obj.close();
fout.close();
}
catch(IOException ex){
ex.printStackTrace();
}
}
} 以上这段代码,就是一个非常简单的序列化程序,它完成了对象冷冻的操作,将MyObject的实例保存到了一个名字叫obj.ser的文件中去了。
但是对于一个大型应用程序而言,对象状态的保存,是不能直接保存到平面文件上去的,这将导致数据难以管理。所以这个时候,数据库的重要性就突显出来了。
现在市面上流行的数据库,主要是关系型数据库管理系统,也就是我们经常听到的RDBMS,所谓关系型数据库,就是主要以二维表的形式来组织数据,(当然还会包括存储过程、视图、触发器之类的东东,但是主要的数据表现形式还是二维表),二维表主要由行和列组成,一行称为一条记录,一列称为一个字段。如果要使对象状态能够被保存到数据库,则该语言必须具备访问数据库的一系列接口,Java中使用JDBC API来操作数据库,例如:
import java.sql.*;
public class QueryApp{
public static void main(String a[]) {
ResultSet result;
try{
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
Connection con=DriverManager.getConnection(jdbc:odbc:MyDataSource,sa,ok);
Statement stat=con.createStatement();
result=stat.executeQuery(Select * from Publishers);
while(result.next()){
System.out.println(名字:\t+result.getString(2));
System.out.println(城市:\t+result.getString(city));
}
}
catch(Exception e){
System.out.println(Could not execute the query+e);
}
}
} 以上代码是一段简单的JDBC代码,而且运行完全正确,不过
文档评论(0)