搭建Hibernate的环境:
新建一个User Library:Hibernate 3,引入jar文件:
HIBERNATE_HOME\lib 下的相关的依赖的第三方包
HIBERNATE_HOME/hibernate3.jar Hibernate的核心实现
引入相关的JDBC驱动
把创建的Hibernate用户库引进项目中
在项目src目录下创建相关配置文件:
HIBERNATE_HOME \etc\ hibernate.properties 旧版本的Hibernate实用的核心配置文件,这个文件列举了相关的Hibernate配置,在配置文件时可以参考该文件。
HIBERNATE_HOME \etc\ hibernate.cfg.xml 如果存在这个文件则会覆盖上面的properties文件
HIBERNATE_HOME\hibernate-3.2\etc 日志记录文件
编写hibernate.cfg.xml文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">abc</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<!--
<property name="hibernate.format_sql">true</property>
-->
<mapping resource="com/test/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
基本的映射实体了的xml格式:
<hibernate-mapping>
<class name="com.test.User">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name" column=”user_name”/>
<property name="password"/>
</class>
</hibernate-mapping>
创建完映射文件之后,记得把hbm.xml文件添加到hibernate.cfg.xml文件中
<mapping resource="com/test/User.hbm.xml"/>
(在session-factory标签里property标签后)
生成第一个数据库和表:
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
创建hibernate.cfg.xml文件中指定的test_1数据库,并使用该数据库,然后运行上面的代码
将对象保存到数据库表中:
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
// SessionFactory一个数据库创建一个就可以了,它是线程安全的
Session session = null;
try {
session = factory.openSession();
session.beginTransaction();
User user = new User();
user.setName("张三");
user.setPassword("123");
session.save(user);
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
持久化对象的三种状态:
Transient,Persist,Detached
get方法查询的使用:
session.beginTransaction();
//get加载上来的对象为持久对象
//执行get会马上发出查询语句
User user = (User)session.get(User.class, "001");
System.out.println(user.getName());
//Persistent状态
//Persistent状态的对象,当对象的属性发生改变的时候
//hibernate在清理缓存(脏数据检查)的时候,会和数据库同步,相当于执行了一个flush语句;
user.setName(”王五");
session.getTransaction().commit();
当使用get方法查询数据库中没有的数据时,返回null,所以需要做一下判断,避免出现空指针
Load方法查询的使用:
session.beginTransaction();
//不会马上发出查询语句,因为load支持lazy(延迟加载/懒加载)
//hibernate的lazy采用代理对象实现,代理对象主要采用的是CGLIB库生成
//生成代理,它采用的是继承方式
User user = (User)session.load(User.class, "002");
System.out.println(user.getName());
user.setName("王五");
session.getTransaction().commit();
delete方法的使用:
User user = (User)session.load(User.class, "001");
//删除,建议采用此种方式删除:先加载再删除
session.delete(user);
session.getTransaction().commit();
//手动构造Detached对象
User user = new User();
user.setId("002");
session.delete(user);
session.getTransaction().commit();
update方法的使用:
//手动构造Detached对象,生成的语句问好是随着修改的属性动态改变的
User user = new User();
user.setId("001");
user.setName("张三");
session.update(user);
session.getTransaction().commit();
session.beginTransaction();
//建议采用此种方式更新,先加载再更新,生成固定的sql语句,不影响效率
User user = (User)session.load(User.class, "002");
user.setName("李四");
//可以显示的update
session.update(user);
session.getTransaction().commit();
使用Query接口:
session.beginTransaction();
Query query = session.createQuery("from User"); //使用hql语句
List userList = query.list();
for (Iterator iter=userList.iterator(); iter.hasNext();) {
User user = (User)iter.next();
System.out.println("id=" + user.getId() + ", name=" + user.getName());
}
session.getTransaction().commit();
新建一个User Library:Hibernate 3,引入jar文件:
HIBERNATE_HOME\lib 下的相关的依赖的第三方包
HIBERNATE_HOME/hibernate3.jar Hibernate的核心实现
引入相关的JDBC驱动
把创建的Hibernate用户库引进项目中
在项目src目录下创建相关配置文件:
HIBERNATE_HOME \etc\ hibernate.properties 旧版本的Hibernate实用的核心配置文件,这个文件列举了相关的Hibernate配置,在配置文件时可以参考该文件。
HIBERNATE_HOME \etc\ hibernate.cfg.xml 如果存在这个文件则会覆盖上面的properties文件
HIBERNATE_HOME\hibernate-3.2\etc 日志记录文件
编写hibernate.cfg.xml文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">abc</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<!--
<property name="hibernate.format_sql">true</property>
-->
<mapping resource="com/test/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
基本的映射实体了的xml格式:
<hibernate-mapping>
<class name="com.test.User">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name" column=”user_name”/>
<property name="password"/>
</class>
</hibernate-mapping>
创建完映射文件之后,记得把hbm.xml文件添加到hibernate.cfg.xml文件中
<mapping resource="com/test/User.hbm.xml"/>
(在session-factory标签里property标签后)
生成第一个数据库和表:
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
创建hibernate.cfg.xml文件中指定的test_1数据库,并使用该数据库,然后运行上面的代码
将对象保存到数据库表中:
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
// SessionFactory一个数据库创建一个就可以了,它是线程安全的
Session session = null;
try {
session = factory.openSession();
session.beginTransaction();
User user = new User();
user.setName("张三");
user.setPassword("123");
session.save(user);
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
持久化对象的三种状态:
Transient,Persist,Detached
get方法查询的使用:
session.beginTransaction();
//get加载上来的对象为持久对象
//执行get会马上发出查询语句
User user = (User)session.get(User.class, "001");
System.out.println(user.getName());
//Persistent状态
//Persistent状态的对象,当对象的属性发生改变的时候
//hibernate在清理缓存(脏数据检查)的时候,会和数据库同步,相当于执行了一个flush语句;
user.setName(”王五");
session.getTransaction().commit();
当使用get方法查询数据库中没有的数据时,返回null,所以需要做一下判断,避免出现空指针
Load方法查询的使用:
session.beginTransaction();
//不会马上发出查询语句,因为load支持lazy(延迟加载/懒加载)
//hibernate的lazy采用代理对象实现,代理对象主要采用的是CGLIB库生成
//生成代理,它采用的是继承方式
User user = (User)session.load(User.class, "002");
System.out.println(user.getName());
user.setName("王五");
session.getTransaction().commit();
delete方法的使用:
User user = (User)session.load(User.class, "001");
//删除,建议采用此种方式删除:先加载再删除
session.delete(user);
session.getTransaction().commit();
//手动构造Detached对象
User user = new User();
user.setId("002");
session.delete(user);
session.getTransaction().commit();
update方法的使用:
//手动构造Detached对象,生成的语句问好是随着修改的属性动态改变的
User user = new User();
user.setId("001");
user.setName("张三");
session.update(user);
session.getTransaction().commit();
session.beginTransaction();
//建议采用此种方式更新,先加载再更新,生成固定的sql语句,不影响效率
User user = (User)session.load(User.class, "002");
user.setName("李四");
//可以显示的update
session.update(user);
session.getTransaction().commit();
使用Query接口:
session.beginTransaction();
Query query = session.createQuery("from User"); //使用hql语句
List userList = query.list();
for (Iterator iter=userList.iterator(); iter.hasNext();) {
User user = (User)iter.next();
System.out.println("id=" + user.getId() + ", name=" + user.getName());
}
session.getTransaction().commit();