快速回顾:
快速回顾:
1.配置数据源(MyEclipse DataBase Explorer)
2.导入Hibernate资源(MyEclipse Java Enterprise Development)
3.自动生成对应的类(MyEclipse DataBase Explorer)
4.dao包(UserDao UserDaoImpl UserDaoImplFactory)
public List find(String hql);
public boolean saveOrUpdate(Object o);
public boolean delete(Object o);
public Object get(Class c,int i);
public boolean execute(String hql);
5.bean包(带主函数的java类)
1.新建数据库Users,表UserInfo 字段Id name pwd
2.配置数据源,步骤:点MyEclipse右上角网格状(Open Perspective)-->MyEclipse DataBase Explorer
-->在左边的DB Browser空白处(右键New)-->配置好参数-->
Driver template 选Microsoft SQL Server 2005
Driver name 自己随便写(比如:sql2005)
Connection URL jdbc:sqlserver://localhost:1433;databaseName=Users(其中:Users是自己的数据库名)
Users name sa
Password
-->点Add JARs(找到2005的驱动sqljdbc) -->finish -->右键刚才新建的sql2005(Open connection测试下成功否)
3.导入Hibernate资源
再次点MyEclipse右上角网格状(Open Perspective)-->切换到MyEclipse Java Enterprise Development
-->新建一个项目(hibernate_he)-->右键hibernate_he(选MyEclipse-->Add Hibernate Capabilities)
-->下面的单选按钮选Copy checked...-->next-->next(DB Driver里选sql2005(刚才配好的数据源))
-->next(点Java package右边的New..-->设name为po)-->finish
4.根据表自动生成对应的类
切换到MyEclipse DataBase Explorer(点MyEclipse右上角网格状(Open Perspective))
-->sql2005/Users/dbo/TABLE/UserInfo(其中Users是自己的数据库名,UserInfo是要用的表名)
-->右键UserInfo(选Hibernate Reverse Engineering,然后第一个Browser选Hibernate_he/src/po
并选中前3个复选框,其他的为非选中状态-->next(Id Generator 设置为native)-->finish
以上Hibernate的准备工作完毕
5.在src下新建dao包(接口UserDao,实现接口的类UserDaoImpl,工厂UserDaoImplFactory)
3个类代码
package dao;
import java.util.List;
public interface UserDao {
public List find(String hql);
public boolean saveOrUpdate(Object o);
public boolean delete(Object o);
public Object get(Class c,int i);
public boolean execute(String hql);
}
package dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import java.util.List;
import po.HibernateSessionFactory;
public class UserDaoImpl implements UserDao {
public boolean delete(Object o) {
boolean flag=false;
Session session = HibernateSessionFactory.getSession();
Transaction tran=null;
try{
tran=session.beginTransaction();
session.delete(o);
tran.commit();
flag=true;
}
catch(Exception ex){
tran.rollback();
ex.printStackTrace();
}
finally{
if(session!=null)
{
session.close();
}
}
return flag;
}
public boolean execute(String hql) {
boolean flag=false;
Session session = HibernateSessionFactory.getSession();
Transaction tran=null;
try{
tran=session.beginTransaction();
Query query = session.createQuery(hql);
query.executeUpdate();
tran.commit();
flag=true;
}
catch(Exception ex){
tran.rollback();
ex.printStackTrace();
}
finally{
if(session!=null)
{
session.close();
}
}
return flag;
}
public List find(String hql) {
Session session=HibernateSessionFactory.getSession();
Query query =session.createQuery(hql);
return query.list();
}
public Object get(Class c, int i) {
Session session=HibernateSessionFactory.getSession();
return session.get(c, i);
}
public boolean saveOrUpdate(Object o) {
boolean flag=false;
Session session = HibernateSessionFactory.getSession();
Transaction tran=null;
try{
tran=session.beginTransaction();
session.saveOrUpdate(o);
tran.commit();
flag=true;
}
catch(Exception ex){
tran.rollback();
ex.printStackTrace();
}
finally{
if(session!=null)
{
session.close();
}
}
return flag;
}
}
package dao;
public class UserDaoImplFactory {
public static UserDao getUserDaoImpl(){
return new UserDaoImpl();
}
}
6.在src下新建bean包(新建一个类Test,勾选Public static void main..)
1.切换不同的注释看效果(Alt+/ 为注释快捷键)
1.普通插入或修改,查询
2.修改或者删除一条数据(先用get得到一个对象(即一条数据))
3.修改或者删除多条数据(execute(hql)原理:hql=update UserInfo u set u.pwd=250 where u.type=1)
2.测试时,最好先多插入几条数据,呵呵
7.注意问题:
1.Hibernate里的是hql语句(类似sql,不同的是表名和字段名改为类名和字段名,具体的对应关系在po/*.hbm.xml)
比如下面的from UserInfo u where u.id=1(不要写成userInfo 和Id了)
<hibernate-mapping>
<class name="po.UserInfo" table="userInfo" schema="dbo" catalog="Users">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="native" />
</id>....
2.sql配置数据源时,有时连接不上,需要在sql2005的配置管理器里(把Tcp/ip启动,然后把数据库关闭连接再打开)
如果还有什么其他问题,肯定是数据库的问题,而且主要就是sql2005的配置管理器里,由于具体版本不一样
就不多说了
恩,其中很多问题都是在sql2005的配置管理器里(找到Tcp/ip并右键->属性->ip地址->最后端口号设置为1433
8.代码和资源: 代码下载 sql2005驱动