1 Hibernate是一个orm的轻量级框架,解决持久化操作,使得程序员可以从编写繁复的jdbc工作中解放出来。专注于我们的业务。提高程序员的开发效率。
2 增:实现保存用户信息
处理类:
public class Test {
public static void main(String[] args) {
// 1新建Configuration对象
//Configuration cfg=new Configuration().configure();
Configuration cfg=new Configuration().configure();
// 2通过Configure创建SessionFactory对象
/*SessionFactory sf=cfg.buildSessionFactory();*/
/* ServiceRegistry sr=new ServiceRegistryBuilder().appl */
ServiceRegistry registry=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build();
SessionFactory sf=cfg.buildSessionFactory(registry);
Session session = sf.openSession();
Transaction transaction=session.beginTransaction();//开启事务
User user = new User();
user.setName("张三疯");
user.setPwd("1111");
session.save(user);//保存
transaction.commit();//提交
session.close();
System.out.println("run over");
}
}
实体类:
private int id;
private String name;
private String pwd;
省略 get set方法
表与实体类的映射关系配置:
<!-- 实现实体类与表结构的关联 -->
<class name="cn.siggy.pojo.User" table="user">
<id name="id">
<!-- 主键生成策略 -->
<generator class="native" />
</id>
<!-- 实体类的属性 -->
<property name="name" />
<property name="pwd" />
</class>
2 删
删除有三种方式。
/**
* 删除,通过load方式获取然后删除
*/
public static void delete01() {
Session session = getSession();
Transaction transaction = session.beginTransaction();
User user = (User) session.load(User.class, 11);// 当数据不存在时,会抛出异常
session.delete(user);
transaction.commit();
session.close();
System.out.println("run over");
}
/**
* 删除,get方式获取然后删除
*/
public static void delete02() {
Session session = getSession();
Transaction transaction = session.beginTransaction();
User user = (User) session.get(User.class, 12);// 当数据不存在时,不会抛出异常
session.delete(user);
transaction.commit();
session.close();
System.out.println("run over");
}
/**
* 删除,通过主键构造一个对象然后删除
*/
public static void delete03(){
Session session=getSession();
Transaction transaction=session.beginTransaction();
User user=new User();
user.setId(13);
session.delete(user);
transaction.commit();
session.close();
System.out.println("run over");
}
比较喜欢第三种。
3 改
/**
* 更新,不能选择性更新
*/
public static void update01(){
Session session=getSession();
Transaction transaction=session.beginTransaction();
User user=new User();
user.setId(14);
user.setPwd("22211");//不需要更新的数据自动为空,没有选择性更新
session.update(user);
transaction.commit();
session.close();
System.out.println("run over");
}
/**
* 更新,能选择性的更新数据
*/
public static void update02(){
Session session=getSession();
Transaction transaction=session.beginTransaction();
User user=(User)session.get(User.class, 14);
System.out.println("1"+user.getName());
user.setName("dema");
session.update(user);
transaction.commit();
session.close();
System.out.println("run over");
}
第一种方式更新操作不能选择性更新,极其反感,比较喜欢第二种。
4 查
使用HQL语句,
/**
* 查询,使用HQL,不分页
*/
public static void query01() {
Session session = getSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from User");
List<User> lst = query.list();
System.out.println("数据条数:"+lst.size());
System.out.println();
for (User user : lst) {
System.out.println(user.getId()+" "+user.getName()+" "+user.getPwd());
}
transaction.commit();
session.close();
System.out.println("run over");
}
/**
* 查询,使用HQL,分页
*/
public static void query02(){
Session session = getSession();
Transaction transaction = session.beginTransaction();
Query query=session.createQuery("from User");
query.setFirstResult(0);//设置从第几个开始查
query.setMaxResults(10);//设置条数
List<User> lst = query.list();
System.out.println("数据条数:"+lst.size());
for (User user : lst) {
System.out.println(user.getId()+" "+user.getName()+" "+user.getPwd());
}
transaction.commit();
session.close();
System.out.println("run over");
}
附获取Session的工具方法
/**
* 获取SessionFactory
* @return
*/
private static Session getSession(){
// 1新建Configuration对象
//Configuration cfg=new Configuration().configure();
Configuration cfg=new Configuration().configure();
// 2通过Configure创建SessionFactory对象
/*SessionFactory sf=cfg.buildSessionFactory();*/
/* ServiceRegistry sr=new ServiceRegistryBuilder().appl */
ServiceRegistry registry=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build();
SessionFactory sessionFactory=cfg.buildSessionFactory(registry);
return sessionFactory.openSession();
}
附一个非常经典的Hibernate工具类:
public class HibernateUtil {
private static Configuration cfg=null;
private static SessionFactory factory=null;
private static Session session=null;
static{
cfg=new Configuration().configure();
factory=cfg.buildSessionFactory(new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build());
}
public static Session getSession(){
if(factory!=null){
return factory.openSession();
}
factory=cfg.buildSessionFactory(new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build());
return factory.openSession();
}
public static void closeSession(){
if(session!=null&&session.isOpen()){
session.close();
}
}
}
参考:
http://blog.csdn.net/lovesummerforever/article/details/19190435