|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。server
以下代码在JDK5.0,Hibernate2.1,SQLServer2000SP3中测试经由过程。
第一次利用Hibernate作耐久层,感到利用起来仍是对照庞大的,特别是调试起来很不便利。Hibernate基于反射的机制固然很天真,但分明给跟踪代码打造了停滞,给出的非常信息量也太少。团体感到其改善的余地还很年夜,好比Java新增添了Annotation语法后,是不是可以使用它来界说ORM,而代替hbm.xml的情势。
好了,进进正题。
起首,必需设置数据库,上面以在数据库yufan中的操纵为例。
CREATETABLECUSTOMER(CIDINTEGERNOTNULLPRIMARYKEY,USERNAMEVARCHAR(12)NOTNULL,PASSWORDVARCHAR(12));
然后是一个数据对象,必需为它的每一个字段供应读写属性办法,Hibernate会用反射来检索。
//Customer.java
publicclassCustomer{
privateintid;
privateStringusername;
privateStringpassword;
publicintgetId(){
returnid;
}
publicStringgetPassword(){
returnpassword;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetId(intid){
this.id=id;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
}
然后是Hibernate的映照Customer.hbm.xml
<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<classname="Customer"table="Customer"proxy="Customer">
<idname="id"column="CID">
<generatorclass="increment"/>
</id>
<propertyname="username"column="USERNAME"/>
<propertyname="password"column="PASSWORD"/>
</class>
</hibernate-mapping>
类和映照分离在一同,界说了ORM。
上面是Hibernate的设置文件,包括数据库毗连,映照文件援用等。文件名必需是hibernate.cfg.xml
<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEhibernate-configuration
PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factoryname="java:/hibernate/HibernateFactory">
<propertyname="show_sql">true</property>
<propertyname="connection.driver_class">
com.jnetdirect.jsql.JSQLDriver
</property>
<propertyname="connection.url">
jdbc:JSQLConnect://localhost:1433;database=yufan;
</property>
<propertyname="connection.username">
sa
</property>
<propertyname="connection.password">
yufan
</property>
<propertyname="dialect">
net.sf.hibernate.dialect.SQLServerDialect
</property>
<mappingresource="Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
主要的property包含connection.driver_class,指定JDBC数据库驱动。connection.url制订数据库的Url。我利用的是JSQLDriver,功效上比MS的JDBC驱动壮大。但必需注重的是,在指定命据库的时分,必需利用database=或databaseName=的语法,而DatabaseName则会堕落。MS的驱动则无此成绩。我刚碰到此成绩时真是茫然无绪。。。最初发明是云云。。。
在这个文件中,不克不及利用XML正文,感到是Hibernate的缺点。
最初是Test.java
importnet.sf.hibernate.*;
importnet.sf.hibernate.cfg.*;
publicclassTest{
publicstaticvoidmain(String[]args){
try{
SessionFactorysf=newConfiguration().configure().buildSessionFactory();
Sessionsession=sf.openSession();
Transactiontx=session.beginTransaction();
for(inti=0;i<20;i++){
Customercustomer=newCustomer();
customer.setUsername("customer"+i);
customer.setPassword("customer");
session.save(customer);
}
tx.commit();
session.close();
}
catch(HibernateExceptione){
e.printStackTrace();
}
}
}
好了,在项目中增加对Hibernate库文件的援用,编译实行,你会在数据库中找到新增加的纪录。
代码部分取自史上最复杂的Hibernate进门简介bywatano_cc,依据SQLServer修改。
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。 |
|