温馨提示:下图仅供欣赏,不作为教学。
然后在在book的包下加一个java类Book.java,其代码如下: package book; public class Book { private Integer id; private String name; private String writer; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getWriter() { return writer; } public void setWriter(String writer) { this.writer = writer; } }
温馨提示:下图仅供欣赏,不作为教学。
然后在book包下建一个book.hbm.xml,其代码如下:
温馨提示:下图仅供欣赏,不作为教学。
这个事与数据库里面的字段名形成映射关系,自己在mysql建立book表时与之对应,id是自增长的, 然后在工程的根目录下建一个hibernate.cfg.xml.其代码如下:
温馨提示:下图仅供欣赏,不作为教学。
这是连接mysql数据库的,用户名和密码改为你mysql数据库的
温馨提示:下图仅供欣赏,不作为教学。
然后些个测试类:代码如下: package test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import book.Book; public class MainTest { /** * @param args */ public static void main(String[] args) { try { Configuration cfg=new Configuration()。configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session = sf.openSession(); Transaction ts=session.beginTransaction(); Book b=new Book(); b.setName("hibernate"); b.setWriter("div"); session.save(b); // Book b=(Book) session.get(Book.class,1); // if(b!=null){ // b.setName("xujun"); // System.out.println("书名为:"+b.getName()); // System.out.println("作者为:"+b.getWriter()); // session.delete(b); // } ts.commit(); session.close(); sf.close(); } catch (Exception e) { e.printStackTrace(); } } }
mysql表的字段如下:
8
把数据库建好后就可以测试。对了,关键的还没有说,还得把antlr.jar,cglib.jar,asm.jar,asm-attrs.jar,commons-colletions.jar,commons-logging.jar,ehcache.jar, jta.jar,dom4.jar,log4.jar,hibernate3.jar引入到lib目录下
温馨提示:下图仅供欣赏,不作为教学。
第一种方式:hql(hibernate query languge,hibernate 查询语言)查询
是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,hql 是应用较为广泛的方式
语法:[select/update/delete……] from entity [where……] [group by……] [having……] [order by……]
(1).没使用spring框架的写法:
使用hql需要四步
得到session、编写hql语句、创建query对象(query接口是hql 查询接口。它提供了各种的查询功能)、执行查询,得到结果
sessionfactory =
new configuration().configure().buildsessionfactory();
session = sessionfactory.opensession();
string hql = “from street”;
query query = session.createquery(hql);
list
(2).使用spring框架的写法:
string querystring = "select form entity ....";
list list=gethibernatetemplate().find(querystring);
第二种方式:criteria 查询
criteria 查询采用面向对象方式封装查询条件,又称为对象查询;
就是对sql 语句进行封装,采用对象的方式来组合各种查询条件
由hibernate 自动产生sql 查询语句
(1).没使用spring框架的写法;
criteria由hibernate session进行创建
sessionfactory sessionfactory = new configuration().configure()
.buildsessionfactory();
session session = sessionfactory.opensession();
criteria criteria = session.createcriteria(user.class);
list result = criteria.list();
iterator it = result.iterator();
(2)使用spring框架的写法:
import org.hibernate.criterion.detachedcriteria;
detachedcriteria criteria=detachedcriteria.forclass(objectentity.class);
criteria.add(restrictions.eq("propertyname", propertyvalue));
list result=gethibernatetemplate().findbycriteria(criteria);
第三种方式:使用sql语句查询(以下都是使用了spring框架的写法)
1).这是把执行结果放到了一个类里:(这个类通常使用vo实体,vo实体一般就只用来接收查询结果)
list list = gethibernatetemplate().executefind(new hibernatecallback() {
public object doinhibernate(session session) throws hibernateexception, sqlexception {
stringbuffer hqlbuffer = new stringbuffer("");
hqlbuffer.append("select column_name from ...");//里面是sql语句
sqlquery sqlquery = session.createsqlquery(hqlbuffer.tostring());
sqlquery.addscalar("propertyname",hibernate.string);//该propertyname是 objectvo实体的一个属性
sqlquery.setresulttransformer(transformers.aliastobean(objectvo.class));
list list = sqlquery.list();
return list;//此处list集合中存放的是objectvo对象
}
});
2).返回结果放到list中的:
final string querystring = "";//sql语句
list resultlist=gethibernatetemplate().executefind(new hibernatecallback() {
public list doinhibernate(session session) throws hibernateexception, sqlexception {
sqlquery sqlquery = session.createsqlquery(querystring);
list list=sqlquery.executeupdate();
return list;
}
});
3).无返回结果:
final string querystring = "";//sql语句
gethibernatetemplate().executefind(new hibernatecallback() {
public object doinhibernate(session session) throws hibernateexception, sqlexception {
sqlquery sqlquery = session.createsqlquery(querystring);
sqlquery.executeupdate();
return null;
}
});
人生就像蒲公英看似自由却身不由己