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:HYGJUser name:scott Password:tiger Driver JARs:classes12.jar此时在DB Browser窗口就会出现你刚新建的驱动 oracle93. 新建WEB工程:HibernateDemo4.右键-MyEclipse-Add Hibernate Capabilities...Hibernate 3.1 保持默认就可以--Next--Next--DataSource: Use JDBC DriverDB Driver:会提供可选择使用的驱动,如刚建好的驱动:oracle9以下的信息 你一看会填写o(∩_∩)o...--Next--Create SessionFactory class?不选中--Finish5.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>