hibernate框架的认识?
首先定位在它是基于j2ee平台上一种ORM映射的持久层框架。
hibernate和ibatis,之间的差别?
hibernate通过对象映射关系,并完成对JDBC的封装,
ibatis通过对象映射SQL语句。
hibernate实现的步骤:1.持久化类的设计2.持久化类和关系数据库的映射.(源数据映射设计)3.hibernate的基础配置(hibernate-cfg.xml)包括:
<!-- *连接数据库的信息--> <property name="connection.driver_class">数据库驱动</property> <property name="connection.url">url地址</property> <property name="connection.username">用户名</property> <property name="connection.password">密码</property> <!--*数据库的方言(下面是针对sqlserver的数据库方言),告诉hibernate使用哪种数据库用语--> <property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> <!--*映射文件的信息--> <mapping resource="com/fisher/user.hbm.xml" /> <!--其他信息的配置,下面是些用于调试的配置--> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">create-update</property> <!--使用上面的debug,必需将log4j下的log4j.properties放在src路径下-->
持久化java类的设计,书上和网站上关于持久化类的信息太多,简短的归纳一下在hibernate中持久化类的规范:
1.提供一个默认的无参的构造方法,这样的话Hibernate就可以使用...newinstance来实例化它们。
2.类的属性是私有,并提供公共的get(),set()方法.
3. 提供一个标识属性,例如c_id,这个属性映射数据库表的主键字段,其类型可以是任何的原始类型、原始类型的包装型如Integer,String,或者是 java.util.Date.
4.对于集合类型的属性,应当声明为Collection接口/map接口类型,比如List,Set,Map....
在看hibernate的结构:
hibernate层是介于数据库database和持久类对象之间.
体系结构如下:
configuration---
sessionFactory(针对单个数据库映射关系经过编译后的内存镜像,线程是安全的,它是生成Session的工厂,当然如果要与多个数据库进行连接,就要另外配置sessionFactory)
--session(表示应用程序与持久储存层之间交互操作的一个单线程对象,是transation生成的工厂,隐藏了JDBC的连接
)
--transation( 它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开,事务边界的开启和关闭是必要的)
/query(接口提供了参数绑定、结果集处理以及运行实际查询的方法)
/criteria
比较特殊的是:数据的保存/插入insert要是用session.save()方法来完成