hibernate简单操作

初步认识,只是简单的按照说明文档做了增删改查的Junit测试。
1.首先初始化一个Hibernate的sessionfactory,
private static SessionFactory hibernateSesseionFactory = createHiSessionFactory();
//private static int count = 0;
//单例模式
private HibernateUtil(){

}

public synchronized static SessionFactory getHibernateSessionInstance(){
if(hibernateSesseionFactory == null){
hibernateSesseionFactory = createHiSessionFactory();
}

return hibernateSesseionFactory;
}

@SuppressWarnings("deprecation")
public static SessionFactory createHiSessionFactory(){
SessionFactory sessionFactory = null;
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
//System.out.println("第 " + count + " 个");
} catch (Exception e) {

System.out.println("create hibernate session failed:" + e.getMessage());
}
return sessionFactory;
}

2.创建相应的javabean,数据实体,使用注解的方案执行
@Entity
@Table(name="user")
public class User implements Serializable{

private static final long serialVersionUID = 3517536107453191566L;
private int userId;
private String userName;
private int age;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getUserId() {
return userId;
}

public void setUserId(int userId) {
this.userId = userId;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return this.getUserId() + "--" + this.getUserName() + "--" + this.getAge();
}
}

创建测试类:
private static SessionFactory sessionFactory = HibernateUtil.getHibernateSessionInstance();

@Ignore
@Test
public void testCreate(){
//Session session = sessionFactory.getCurrentSession();
Session session = sessionFactory.openSession();
String name = "test";
Long start = System.currentTimeMillis();

for(int i = 0; i < 1000; i++){
String userName = name + i;
int age = 20;
session.beginTransaction();
User user = new User();
user.setAge(age);
user.setUserName(userName);
session.save(user);
session.getTransaction().commit();
}

System.out.println(System.currentTimeMillis() - start);
session.close();
}

/**
* 查所有
*/
@Ignore
@Test
public void testQuery(){
Session session = sessionFactory.openSession(); //use getCurrentSession will encounter exception: createSQLQuery is not valid without active transaction
//session.getTransaction().begin();
List<Object> list = session.createQuery("from User where id < 100").list();
for(int i = 0; i < list.size(); i++){
User user = (User) list.get(i);
System.out.println(user.getUserName());
}
//session.getTransaction().commit();
session.close();

}

//hibernate的连表查询,在取数据表名的应避开mysql数据库中的关键名称
@Test
public void testQueryCondition2(){
Session session = sessionFactory.openSession();
String hql = "select users.userId, users.userName, users.age, orders.orderInfo, orders.ordersId from User users left join Orders orders on orders.userId = users.userId where users.userName = :userName";
Query query = session.createSQLQuery(hql);
query.setString("userName", "test6");
List<Object> list = query.list();
for(int i = 0; i < list.size(); i++){
Object user = list.get(i);
System.out.println(user.toString());
}
}
//条件查询
@Test
public void testConditionQuery(){
Session session = sessionFactory.openSession();
//Criteria query = sesson.createCriteria(User.class).add(Restrictions.eq("userName", "test1"));
Criteria query = session.createCriteria(User.class)
//.add(Restrictions.like("userName", "%t1%"))
.add(Restrictions.ilike("userName", "%update%"))
.addOrder(Order.desc("userId"));

List<User> list = query.list();

session.getTransaction().begin();
//获取符合条件的记录的主键
for(int i = 0; i < list.size(); i++){
int count = 1;
User user = list.get(i);
//session.delete(user); //delete object
user.setUserName("update name" + i); //重置属性值
session.update(user); //更新属性值
count++;

System.out.println(user.toString());
}
session.getTransaction().commit();


}
[code="java"]


//------------------------多对一表关系-------------------------//
@Ignore
@Test
public void testOrder(){
Session session = sessionFactory.getCurrentSession();
Date date = new Date();

try {
for(int i = 1; i < 11; i++){
for(int j = 0; j < 2; j++){
if(i > 0){
session = sessionFactory.openSession();
}
session.getTransaction().begin();
Orders order = new Orders();
order.setUserId(i);
//order.setOrdersId((sdf.format(date)));

order.setOrdersId("ORDERID" + i + j);

order.setOrderInfo("this is orders from Amazon");
System.out.println(order.toString());
session.save(order);
session.getTransaction().commit();
//Thread.sleep(200000);
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}


session.close();
}

}
hibernate.cfg.xml中配置隐射实体

最后就可以通过简单的java代码来对数据库进行增删改查的操作



[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值