(1)new -- javaproject--输入项目名称 (与web没有关系,只与jdbc有关系的)
(2)添加数据库。首先显示, windows--show views--other--
选择DB Browser
(3)可以看到显示,右键空白处
(4)可以看到显示,右键空白处new
如果是mysql:选择MYSQL Connector/J
如果是oracle:选择Oracle(Thin driver)
(5)弹出classname,点击finish。可以看到已经完成。
(6)右键数据库,选择对应的库,表,右键--Hibernate reverse engineering--
(7)选择包,选择对应的选项--next
(8)选择native--next
(9)先别急着点击finish,点击表--输入 entity.Car。意思是entity包下创建Car类,然后选择native--点击finish。
(10)生成下边的,再创建一个sql包--new file--输入名字:dosql.sql文件。
(11)创建sql文件后,输入语句:select * from emp;在sql results中可以查看。
在自动生成emp实体类,自动生成的 Emp.hbm.xml 。这些是根据数据库生成的java代码和配置文件。接着来写测试类
在自动生成emp类中sourse--new一个toString方法。
(12)创建HibernateTest类。
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import entity.Emp;
public class HibernateTest {
public static void main(String[] args) {
//Hibernate的配置类对象,用于创建SessionFactory.
Configuration conf = new Configuration().configure();
//会话(session)工厂, 用于创建Session的. 等价于jdbc的Connection
SessionFactory factory = conf.buildSessionFactory();
//开启会话
Session session = factory.openSession();
//通过会话 curd操作.
//保存一个对象,通过测试
saveEmpTest(session);
//修改对象,通过测试
//updateEmpTest(session);
//删除一个,通过测试
//removeEmpTest(session);
//查询一个对象,通过测试
queryEmpById(session, 7900);
//查询列表
queryEmpList(session);
queryEmpListByDeptno(session, 10);
//会话完毕之后要关闭
session.close();
//关闭工厂
factory.close();
}
static void saveEmpTest(Session session){
Emp emp = new Emp();
emp.setEmpno(1); //由于hbm重配置的主键生成策略是native, 所以指定的工号无效..
emp.setEname("新建的名字");
session.beginTransaction(); //开启事务
session.save(emp);
session.getTransaction().commit();//提交事务
}
static void updateEmpTest(Session session){
/*Emp emp = new Emp();
emp.setEmpno(1);
//emp.setEname("DEF");
emp.setSal(1000.0);
session.update(emp);*/
//先查出对象(持久化状态的).
Emp emp = (Emp)session.get(entity.Emp.class, 7938);//类名,后边参数是写编号,修改名字。
//修改对象属性
emp.setEname("Sam");
session.beginTransaction(); //开启事务
session.getTransaction().commit();//提交事务
}
//删除表格,成功删除
static void removeEmpTest(Session session){
Emp emp = new Emp();
emp.setEmpno(7938);
session.delete(emp);
session.beginTransaction(); //开启事务
session.getTransaction().commit();//提交事务
}
static void queryEmpById(Session session , Integer empno){
Emp emp = null;
emp = (Emp)session.get(entity.Emp.class, empno);
//emp = (Emp)session.load(entity.Emp.class,empno);
//---get / load 有区别
System.out.println(emp);
}
//HQL查询
static void queryEmpList(Session session){
Query query = session.createQuery("from Emp");
List<Emp> empList = query.list();
System.out.println(empList);
}
static void queryEmpListByDeptno(Session session, Integer deptno){
Query query = session.createQuery("from Emp where deptno = :deptno");
query.setParameter("deptno", deptno);
List<Emp> empList = query.list();
System.out.println(empList);
}
}
(13)运行程序,可以看到下边打印出数据库的信息。
(14)一个简单的hibernate程序创建成功了,接着就可以写程序啦。
错误提示:原因是服务器没开。