hibernate--CRUD初体验

hibernate的crud操作初体验。

看具体实例

package com.fuwh.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.GenericGenerator;

@Entity
public class Student {

    @Id
    @GeneratedValue(generator="_native")
    @GenericGenerator(name="_native",strategy="native")
    private int id;
    @Column(name="stuName")
    private String name;

    private int age;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}
<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- 数据库连接设置 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">mysqladmin</property>
        <!--
             指定方言,表明用的是哪种数据库,也可以不指定,hibernate默认会翻译成正确的数据库脚本
            方言可以在 hibernate-release-xx.xx/project/etc/hibernate.properties 中查找
         -->
        <property name="hibernate.dialect">MySQL5</property>
        <!-- 设定时候更新表结构,不存在或自动创建 -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!-- 配置 在后台打印出sql语句 -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
       <!-- 引入实体类和表的映射文件 -->
        <mapping class="com.fuwh.model.Student"/>
    </session-factory>

</hibernate-configuration>
package com.fuwh.service;

import static org.junit.Assert.*;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.fuwh.model.Student;

public class StudentTest {

    //标准的sessionFactory取得方式
    private SessionFactory sessionFactory;

    @Before
    public void setUp() throws Exception {
        final StandardServiceRegistry registry=new StandardServiceRegistryBuilder().configure().build();
        try {
            sessionFactory=new MetadataSources(registry).buildMetadata().buildSessionFactory();
        } catch (Exception e) {
            // TODO: handle exception
            StandardServiceRegistryBuilder.destroy(registry);
        }
    }

    @After
    public void tearDown() throws Exception {
        if(sessionFactory != null){
            sessionFactory.close();
        }
    }

    @Test
    public void testAdd() {
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        Student student=new Student();
        student.setName("李四");
        student.setAge(18);
        session.save(student);
        session.getTransaction().commit();
        session.close();
    }

    @Test
    public void testUpdate() {
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        Student student=(Student)session.get(Student.class, 1);
        student.setAge(19);
        session.saveOrUpdate(student);
        session.getTransaction().commit();
        session.close();
    }

    @Test
    public void testDelete() {
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        Student student=session.get(Student.class, 1);
        session.delete(student);
        session.getTransaction().commit();
        session.close();
    }

    @Test
    public void testQuery() {
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        List result=session.createQuery("from Student").getResultList();
        for(Student stu:(List<Student>)result){
            System.out.println(stu);
        }
        session.getTransaction().commit();
        session.close();
    }

}
时间: 2024-10-10 04:23:30

hibernate--CRUD初体验的相关文章

SSH初体验系列--Hibetnate--2--crud操作

Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基础,提供了众多的数据库操作方法,如save(),update(),delete()...etc,用于完成对象的增加,修改,删除等方法. 后面代码中使用到的HinernateUtil类:是用于构建SessionFactory(Hibernate提供的获取session的工厂类)的一个封装类,在前面的文

Spring学习初体验

一.首先我们要明确我们为什么要学?在我们学习了javaweb基础后,我们基本可以完成基本的网站要求,但是我们为什么要学习和使用使用Spring? 1.降低组件之间的耦合度,实现软件各层之间的解耦. controller----->service--------->dao 2.可以使用容器几桶的众多服务.如:事务管理服务.消息服务.当我们使用容器管理时,开发人员就不再需要手工控制事务,也不需处理复杂的事务传播. 3.容器提供单例模式支持,开发人员不再需要自己编写实现代码. 4.容器提供了AOP技

Node.js 网页瘸腿爬虫初体验

延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./1.txt'); /

初识缓存以及ehcache初体验

1.缓存的意义 缓存机制就是将数据库中常用的数据取出放入内存中,程序调用时直接从内存中取,丌用每次使用  数据都访问数据库,这样提高了效率. 2.缓存需要关注的问题 1)  缓存的更新 缓存中的数据必须是同数据库中数据保持一致. 2)  缓存的命中率 提高缓存数据的利用率,缓存中存放的是用户常用的数据,如果缓存中存放的是用户丌常用的, 那么就说缓存的命中率丌高. 有些时候,是某些缓存数据在某个时刻使用率高,某个时刻使用率低,所以需要时刻更新, 以提高缓存命中率. Hibernate的缓存机制 ?

Memcached初体验及原理讲解

1.简介 Memcached 是一个 高性能的 分布式 内存对象缓存系统,用于动态Web应用减少数据库负载,提升性能. 2.试用场景 1.变化频繁,具有不稳定性的数据 (比如用户在线状态.在线人数..) 2.门户网站的新闻等,觉得页面静态化仍不能满足要求,可以放入到memcache中. 什么样的数据不适合放入memcached中?(银行,股票,证券系统.) 过大的数据不能放入到memcache(优酷网.) --我自己的一个小结如何决定是否使用memcached --如果是一个小网站,pv值不大,

erlang 初体验

最近测试了一下 erlang的坑... 如不出意外.... 大家第一眼看到这语法... 心里第一句一定是"我擦.这TM都是啥!!!!!" 没有变量!!! 没有结构体!!! 没有循环!!! 好吧,至少我是这样想的. 找了半天..连个if也不知道怎么写.. 这记录一些基本常识.. -module(module_name)  %%定义模块 括号内的要和文件名相同. -export([fun1/1 fun2/2]) %%这里是导出2个函数对外使用  函数名/参数名. 一个简单的函数定义如下 f

linux初体验

第一次听到linux这个'词语'是在一次偶然的朋友聊天中朋友提到的,之前压根没听到过'这个东西',所以我可以说是个linux的新新手,菜鸟都不算. 截至到目前,我已经开始linux系统运维学习有差不多10天时间了.在没接触linux之前,我对它的认识仅仅是:它是个计算机系统.决定学习linux系统运维之前,自我以为运维应该是对系统的一些日常维护之类的,不会很难的东西,我更希望运维是个不难的东西,我个人很笨,对难的东西可能接受的很慢,所以我愿意认为运维是很简单的,这样我就可以轻轻松松的掌握运维相关

【Spark深入学习 -15】Spark Streaming前奏-Kafka初体验

----本节内容------- 1.Kafka基础概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知识 1.2.2.架构和原理 1.2.3.基本概念 1.2.4.kafka特点 2.Kafka初体验 2.1 环境准备 2.2 Kafka小试牛刀 2.2.1单个broker初体验 2.2.2 多个broker初体验 2.3 Kafka分布式集群构建 2.3.1 Kafka分布式集群构建 2.3.2 Kafka主题创建 2.3.3 生产者生产数据 2.3.4消费者消费数据 2.3.5消息的

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的