1.Window-Preferences-MyEclipse-Database Explorer-Database Drivers-DB Browser 2.在DB Browser窗口中 New... (新建Database Driver) Driver name:oracle9 Connection URL:jdbc:oracle:thin:@localhost:1521:HYGJ User name:scott Password:tiger Driver JARs:classes12.jar 此时在DB Browser窗口就会出现你刚新建的驱动 oracle9 3. 新建WEB工程:HibernateDemo 4.右键-MyEclipse-Add Hibernate Capabilities... Hibernate 3.1 保持默认就可以--Next--Next-- DataSource: Use JDBC Driver DB Driver:会提供可选择使用的驱动,如刚建好的驱动:oracle9 以下的信息 你一看会填写o(∩_∩)o... --Next-- Create SessionFactory class?不选中 --Finish 5.hibernate.cfg.xml中的部分代码如下: ... <hibernate-configuration>
<session-factory> <property name="connection.username">scott</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:HYGJ</property> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="myeclipse.connection.profile">oracle9</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.password">tiger</property> </session-factory>
</hibernate-configuration>
在数据库中创建表: create table login( username varchar(50) not null primary key, password varchar(20) not null );
与数据库对应的类pojo类 package com.hygj.furong.pojo; /** * pojo类---Login * @author lotus * @version 1.0 * 2008-10-11 */ public class Login { private String username; private String password; public String getPassword() { return password; } public Login() { super(); } public Login(String username, String password) { super(); this.username = username; this.password = password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } POJO类的名称最好与表名称一致 表:login POJO类名称:Login
建立映射文件: 在DB Brower窗口,先打开连接:open connection 选择您所使用的用户,如:scott 选择表:TABLE 选中刚建立的表Login 右键:选择Hibernate Reverse Engineering... Java src folder:com.hygj.furong.pojo --Finish 此时在com.hygj.furong.pojo中就自动创建好了映射文件:Login.hbm.xml 部分代码如下: ... <hibernate-mapping> //指定Login类与login表的映射 <class name="com.hygj.furong.pojo.Login" table="LOGIN" schema="LOTUS"> //name表示Login类中的属性名字 //column表示表中字段的名字 //type类型 <id name="username" type="java.lang.String"> <column name="USERNAME" length="50" /> //主键的生成方式:此处是:指派,表示由用户自行管理 <generator class="assigned" /> </id> //表示Login类中与表中其他字段的映射 //name:Login类中的属性名称 //column:表中的字段名称 //type:类型 //not-null:不允许为空 <property name="password" type="java.lang.String"> <column name="PASSWORD" length="20" not-null="true" /> </property> </class> </hibernate-mapping> 此时在hibernate.cfg.xml中添加了代码: <mapping resource="com/hygj/furong/pojo/Login.hbm.xml" />
然后写操作Login类的类 package com.hygj.furong.logic;
import java.util.Iterator;
import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import java.util.List;
import com.hygj.furong.pojo.Login;
/** * 具体操作Hibernate的类 实现 增删改查 基本业务逻辑 * * @author lotus * @version 1.0 2008-10-10 * */ public class LoginLogic { /* * 在Hibernate中,所有操作都是通过Session完成 此Session不同于JSP中的Session */ private Session session = null;
private Transaction tran = null;
private Login login = null;
/* * 实例化Session对象 */ public LoginLogic() { /** * 1.找到Hibernate配置 2.从配置中取出SessionFactory 3.从SessionFactory中取出Session */ Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); this.session = factory.openSession(); }
/** * 所有得操作 都是通过Session进行的 涉及到事物处理,一定要手动的提交事物 */
/** * 添加用户 * * @param login * 登陆对象 */ public void add(Login login) { // 通过Session获取Transaction对象 tran = this.session.beginTransaction(); this.session.save(login); // 事物提交 tran.commit(); // 关闭session this.session.close(); }
/** * 修改用户 * * @param login * 登陆对象 */ public void update(Login login) { // 通过Session获取Transaction对象 tran = this.session.beginTransaction(); this.session.update(login); // 事物提交 tran.commit(); // 关闭session this.session.close(); }
/** * 删除用户 使用此方法删除数据前,必须先查询到数据对象 * * @param login * 登陆对象 */ public void delete(Login login) { // 通过Session获取Transaction对象 tran = this.session.beginTransaction(); this.session.delete(login); // 事物提交 tran.commit(); // 关闭session this.session.close(); }
/** * 在Hibernate3之中根据HQL中的语句进行了修改,增加了删除指令 * * @param name * 主鍵 */ public void delete(String name) { String hql = "DELETE Login WHERE username=?"; Query query = this.session.createQuery(hql); // 设置参数 query.setString(0, "lotus"); // 执行更新语句 query.executeUpdate(); // 进行事物处理 tran = this.session.beginTransaction(); // 事物提交 tran.commit(); // 关闭session this.session.close(); }
/** * 按ID查询:推荐使用HQL */ public Login queryById(String name) { // 使用Hibernate查询语言 String hql = "FROM Login AS l WHERE l.username=?"; // 通过Query接口查询 Query query = this.session.createQuery(hql); query.setString(0, name); Iterator iter = query.list().iterator(); if (iter.hasNext()) { login = (Login) iter.next(); } // 关闭session this.session.close(); return login; }
/** * 查询所有记录 */ public List queryAll() { List list = null; String hql = "FROM Login as l"; Query query = this.session.createQuery(hql); list = query.list(); // 关闭session this.session.close(); return list; }
public List queryLike(String name) { List list = null; String hql = "FROM Login as l WHERE l.username like ?"; Query query = this.session.createQuery(hql); query.setString(0, "%" + name + "%"); list = query.list(); // 关闭session this.session.close(); return list; } }
测试所写的LoginLogci类中的方法: package com.hygj.furong.test;
import java.util.Iterator; import java.util.List;
import com.hygj.furong.logic.LoginLogic; import com.hygj.furong.pojo.Login;
/** * PO类测试类 * * @author lotus * */ public class TestPO { /** * 生成POJO类实例化对象 * */ public static void testLogic() { /** * 测试 添加方法 */ /* Login login = new Login("furong","furong"); new LoginLogic().add(login); */
/** * 测试 按id查询方法 */ /* Login login1 = new LoginLogic().queryById("lotus"); System.out.println(login1.getUsername()); */
/** * 测试 查询所有方法 */ /* List list = new LoginLogic().queryAll(); Iterator iter = list.iterator(); while (iter.hasNext()) { Login login = (Login) iter.next(); System.out.println("username:" + login.getUsername()); } */ /** * 测试 模糊查询 */ /* List list = new LoginLogic().queryLike("a"); Iterator iter = list.iterator(); while (iter.hasNext()) { Login login = (Login)iter.next(); System.out.println("username:" + login.getUsername()); } */ }
public static void main(String[] args) { TestPO.testLogic(); }
} 如果要查看执行的sql语句,在hibernate.cfg.xml中添加如下代码: <property name="show_sql">true</property>
|