Hibernate入门
来源:互联网 发布:知乎 红楼梦 情榜 编辑:程序博客网 时间:2024/06/05 09:05
*常用的or映射框架:Apache OJB、JDO、Toplink、EJB(CMP)、JPA、IBatis。(其中IBatis是对sql的映射)
*Hibernate的好处:不用写sql语句,操作相应的对象就能存储,修改。
*Hibernate实现了透明持久化:POJO对象没有继承第三方框架的任何类,没有实现任何接口
*批量修改数据(批量修改1000条数据):OR映射框架不适合.
*Eclipse切换工作目录方法:File->Switch Workspace
*自定义jar库的时候:System library(added to the boot class path)不打勾!!
*Hibernate主要是对象关系映射。
*Hibernate创始人:Gavin King 2001年出来的。EJB,也是由他参与的。
- Hibernte_first:
1、 创建java项目
2、 创建jar库
配置User Libraries方法:proferenes->java->Build Path->User Liberaries
加入的jar包: HIBERNATE_HOME/hibernate3.jar ; HIBERNATE_HOME/lib/*.jar
System library不打勾
3、 创建配置文件,为了便于调试最好加入log4j配置文件
Hibernate配置文件:hibernate.cfg.xml可以改名,在读取配置文件的时候上写名字。 也支持property配
置,现在一般用xml配置。
*Mysql的数据文件存储路径:All User ->Application Date->MySQL->MySQL Server 5.1
复制发行包里的cfg.xml
<hibernate-configuration>
<session-factory >
<!-- 配url、driver、username、password、方言(适配器) -->
<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate_first</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/guojie/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
实体类:POJO
private String id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
映射文件:Hibernate中最复杂的就是映射文件,取名标准:实体类名.hbm.xml,一般和实体类放在一起,是描述实体类pojo的
<hibernate-mapping>
<class name="com.guojie.hibernate.User">
单一主键用id映射!!!
<id name="id">
<!--生成策略是uuid 还是native还是其他-->
<generator class="uuid"></generator>
</id>
<property name="name"/>
<property name="password"/>
<property name="createTime"/>
<property name="expireTime"/>
</class>
</hibernate-mapping>
Log4j配置:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
其他的都可以注释掉!
工具类:作用将实体类生成表(ddl),将对象模型生成关系模型
//工具类:根据映射文件User.hbm.xml配置,将bean生成表,数据库必须是手动自己建的
public class ExportDB {
/**
* @param args
*/
public static void main(String[] args) {
//Configuration cfg = new Configuration();这样是读取property的配置文件的。如果映射文件改名了,则在configure();中传入文件名
Configuration cfg = new Configuration().configure();
//将实体类导成表
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}
客户端:
public static void main(String[] args) {
//读取hibernate.cfg.xml配置文件,如果配置文件改名,则在configure()里面加上参数名
Configuration cfg = new Configuration().configure();
//创建SessionFactory,
SessionFactory factory = cfg.buildSessionFactory();
//创建Session,Session相当于对Connection做了封装,真正用的时候session会到连接池中拿一个Conntection
//包:org.hibernate.Session,即引入下面一个
Session session = null;
try{
session = factory.openSession();
//开启事务
session.beginTransaction();
User user = new User();
user.setName("guojie");
user.setPassword("郭杰");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//保存数据,**放到缓存和临时记录各一份
session.save(user);
//提交事务
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//回滚事务
session.getTransaction().rollback();
}finally{
if(session !=null){
if(session.isOpen()){
//关闭session
session.close();
}
}
}
}
*Configuratioin作用:加载配置文件
*常用的持久层框架:Hibernate, Apache OJB,JDO,JPA,IBatis(严格意义上不是OR映射框架,只是SQL映射)
*一个数据库对应一个SessionFactory,一个业务请求对应一个Session
Session不能多线程用它.
*批量修改数据(批量修改1000条数据):OR映射框架不适合.
*Eclipse切换工作目录方法:File->Switch Workspace
*自定义jar库的时候:System library(added to the boot class path)不打勾!!
*Session导包的时候导入:org.Hibernate.Session
* Query是查询实体类的!!不是查询数据表的!!
*采用Hibernate开发步骤:
0、Hibernate配置文件
1、建议对象关系(实体类)
2、实体类映射文件
3、将映射文件加入到配置文件
4、编写工具类,将实体类生成表。
5、开发客户端
JTA:实现两阶段提交协议,第一阶段把日志记录下来(失败了可以回滚),第二阶段提交事务.EJB默认使用JTA事务. Hibernate可以使用JTA事务和JDBC事务.
SessionFactory:和数据库绑定
Transaction:事务
Query:查询用.支持hql和sql,hql查询实体类
Interceptor:拦截器,没有侵入性;
UserType:用户自定义类,类似Struts中转换器.
适配器:不同数据库换不同适配器
写完映射文件一定要加入cfg.xml配置文件.
普通属性用property,主键用id映射
- Hibernate 入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- hibernate 入门
- Hibernate入门
- hibernate入门
- 推荐一个不错的免费的asp空间
- js控制html中table行的增加和删除 (转)
- textarea高度的增加和减小控制
- 反射机制的应用举例
- 编写linux命令行的clear命令
- Hibernate入门
- ztm语录
- eCGUI 1.0 for VC++6.0(Windows) 发布!
- Hibernate入门2
- Hibernate入门3_基本标签映射
- NAT的完全分析及其UDP穿透的完全解决方案
- Hibernate入门4_多对一关联映射
- 有SelectedIndexChanged事件的控件的刷新问题-需要点击两下才能刷新的问题
- 一对一主键关联