zoukankan      html  css  js  c++  java
  • Hibernate01

    Hibernate简介:
    在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。

    Hibernate的crud

    在pom.xml导入Hibernate依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.chenjiahao</groupId>
      <artifactId>hibernate</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>hibernate Maven Webapp</name>
      <url>http://maven.apache.org</url>
      	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<maven.compiler.source>1.8</maven.compiler.source>
    		<maven.compiler.target>1.8</maven.compiler.target>
    		<junit.version>4.12</junit.version>
    		<servlet.version>4.0.0</servlet.version>
    		<hibernate.version>5.3.0.Final</hibernate.version>
    		<mysql.driver.version>5.1.46</mysql.driver.version>
    	</properties>
      <dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>${junit.version}</version>
    			<scope>test</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<version>${servlet.version}</version>
    			<scope>provided</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-core</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>${mysql.driver.version}</version>
    		</dependency>
    	</dependencies>
      <build>
        <finalName>hibernate</finalName>
        <plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.7.0</version>
    				<configuration>
    					<source>${maven.compiler.source}</source>
    					<target>${maven.compiler.target}</target>
    					<encoding>${project.build.sourceEncoding}</encoding>
    				</configuration>
    			</plugin>
    		</plugins>
      </build>
    </project>
    

    在src/main/resources目录下创建:(主配置文件hibernate.cfg.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    	<hibernate-configuration>
    	<session-factory>
    		<!-- 1. 数据库相关 -->
    		<property name="connection.username">root</property>
    		<property name="connection.password">123</property>
    		<property name="connection.url">jdbc:mysql://localhost:3306/T224?useUnicode=true&characterEncoding=UTF-8
    		</property>
    		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    
    		<!-- 配置本地事务(No CurrentSessionContext configured!) -->
    		<property name="hibernate.current_session_context_class">thread</property>
    
    		<!-- 2. 调试相关 -->
    		<property name="show_sql">true</property>
    		<property name="format_sql">true</property>
    
    		<!-- 3. 添加实体映射文件 -->
    		<mapping resource="com/chenjiahao/one/entity/User.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration>
    

      子配置文件(和实体类在同一目录下):(user.hbm.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        <hibernate-mapping>
        <!-- 
        class标签:
              name:对应的是需要映射的实体类的全路径名
              table:实体类对应的数据库中的表
         id标签: 配置的是表中的主键
              name:对应的是实体类的属性名
              type:指的是实体类数据类型
              column:数据库表对应的列段
          property:配置出去主键以外列段对应的类属性映射关系
                name:对应的是实体类的属性名
                type:指的是实体类数据类型
                column:数据库表对应的列段
                insert="false" update="false"
                                       上面的表示的含义是:该列段或者说该属性只作查询用,不做更新
         -->
    	<class name="com.chenjiahao.one.entity.User" table="t_hibernate_user">
    		<id name="id" type="java.lang.Integer" column="id">
    			<generator class="increment" />
    		</id>
    		<property name="userName" type="java.lang.String" column="user_name">
    		</property>
    		<property name="userPwd" type="java.lang.String" column="user_pwd">
    		</property>
    		<property name="realName" type="java.lang.String" column="real_name">
    		</property>
    		<property name="sex" type="java.lang.String" column="sex">
    		</property>
    		<property name="birthday" type="java.sql.Date" column="birthday">
    		</property>
    		<property insert="false" update="false" name="createDatetime"
    			type="java.sql.Timestamp" column="create_datetime">
    		</property>
    		<property name="remark" type="java.lang.String" column="remark">
    		</property>
    	</class>
    
    </hibernate-mapping>
    

      User实体类:

    package com.chenjiahao.one.entity;
    
    import java.sql.Date;
    import java.sql.Timestamp;
    
    public class User {
    
    	   private Integer id;
    	   private String userName;
    	   private String userPwd;
    	   private String sex;
    	   private Date birthday;
    	   private String realName;
    	   private Timestamp createDatetime;
    	   private String remark;
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getUserName() {
    		return userName;
    	}
    	public void setUserName(String userName) {
    		this.userName = userName;
    	}
    	public String getUserPwd() {
    		return userPwd;
    	}
    	public void setUserPwd(String userPwd) {
    		this.userPwd = userPwd;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public Date getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    	public String getRealName() {
    		return realName;
    	}
    	public void setRealName(String realName) {
    		this.realName = realName;
    	}
    	public Timestamp getCreateDatetime() {
    		return createDatetime;
    	}
    	public void setCreateDatetime(Timestamp createDatetime) {
    		this.createDatetime = createDatetime;
    	}
    	public String getRemark() {
    		return remark;
    	}
    	public void setRemark(String remark) {
    		this.remark = remark;
    	}
    	public User(Integer id, String userName, String userPwd, String sex, Date birthday, String realName,
    			Timestamp createDatetime, String remark) {
    		super();
    		this.id = id;
    		this.userName = userName;
    		this.userPwd = userPwd;
    		this.sex = sex;
    		this.birthday = birthday;
    		this.realName = realName;
    		this.createDatetime = createDatetime;
    		this.remark = remark;
    	}
    	public User() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", userName=" + userName + ", userPwd=" + userPwd + ", sex=" + sex + ", birthday="
    				+ birthday + ", realName=" + realName + ", createDatetime=" + createDatetime + ", remark=" + remark
    				+ "]";
    	}
    	
    	   
    	   
    
    }
    

      

    测试:

    insetDemo类:

    package com.chenjiahao.one.demo;
    
    import java.sql.Date;
    import java.sql.Timestamp;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    import com.chenjiahao.one.entity.User;
    
    /**
     * hibernate新增演示
     * @author dell
     *
     */
    public class InsertDemo {
     
    	
    	  public static void main(String[] args) {
    		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
    		SessionFactory sessionFactory = configure.buildSessionFactory();
    		//会话,而这里的会话指的是操作数据库的链接
    		Session session = sessionFactory.openSession();
    		Transaction transaction = session.beginTransaction();
    	     session.save(new User(null, "123", "456", "男", new Date(System.currentTimeMillis()), "1234", new Timestamp(System.currentTimeMillis()), "777"));
    	     transaction.commit();
    		session.close();
    	}
    }
    

      DeleteUser类:

    package com.chenjiahao.one.demo;
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    import com.chenjiahao.one.entity.User;
    
    /**
     * hibernate删除演示
     * @author dell
     *
     */
    public class DeleteDemo {
    	
     
    	
    	  public static void main(String[] args) {
    		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
    		SessionFactory sessionFactory = configure.buildSessionFactory();
    		//会话,而这里的会话指的是操作数据库的链接
    		Session session = sessionFactory.openSession();
    		Transaction transaction = session.beginTransaction();
    		User user = new User();
    		user.setId(1);
    		session.delete(user);
    		transaction.commit();
    		session.close();
    	}
    }
    

      UpdateUser类:

    package com.chenjiahao.one.demo;
    
    import java.sql.Date;
    import java.sql.Timestamp;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    import com.chenjiahao.one.entity.User;
    
    /**
     * hibernate修改演示
     * @author dell
     *
     */
    public class UpdateDemo {
     
    	
    	  public static void main(String[] args) {
    		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
    		SessionFactory sessionFactory = configure.buildSessionFactory();
    		//会话,而这里的会话指的是操作数据库的链接
    		Session session = sessionFactory.openSession();
    		Transaction transaction = session.beginTransaction();
    //	     session.save(new User(null, "123", "456", "男", new Date(System.currentTimeMillis()), "1234", new Timestamp(System.currentTimeMillis()), "777"));
    		User user = session.get(User.class, 1);
    		
    		user.setRealName("000");
    		System.out.println(user);
    	     transaction.commit();
    		session.close();
    	}
    }
    

      InsertUser类:

    package com.chenjiahao.one.demo;
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    /**
     * hibernate查询演示
     * @author dell
     *
     */
    public class QueryDemo {
    	
     
    	
    	  public static void main(String[] args) {
    		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
    		SessionFactory sessionFactory = configure.buildSessionFactory();
    		//会话,而这里的会话指的是操作数据库的链接
    		Session session = sessionFactory.openSession();
    		List list = session.createQuery("from User").list();
    		for (Object object : list) {
    			System.out.println(object);
    		}
    		session.close();
    	}
    }
    

      Hibernate的三种状态:

  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/11181929.html
Copyright © 2011-2022 走看看