1. 程式人生 > >hibernate基於annotation(註解)的方式建立資料庫表以及儲存資料到資料庫表中(重要)

hibernate基於annotation(註解)的方式建立資料庫表以及儲存資料到資料庫表中(重要)

在這裡建立專案後要把相關jar包與資料庫相關的jar包引入,並且配置好hibernate.cfg.xml檔案,這個專案採用的資料庫名稱是hibernate_anno.

再建立一個實體類User,我們用的是註解的方式,所以不用像上篇文章中建立一個實體類的配置檔案,可以直接在實體類中進行註釋,這樣就簡單很多。

<?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>
  
  
    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <!-- hibernate_anno表示自己建立的資料庫名稱 -->
    <property name="connection.url">jdbc:mysql://localhost:3306/hibernate_anno?characterEncoding=utf-8</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    
    
    

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>
    
    

    <!-- SQL dialect,根據什麼資料庫進行相關的配置,
       在D:\Java相關程式\hibernate-release-4.3.11.Final\documentation\devguide\en-US\html_single中的index.html中可以找到,這裡用mysql -->
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    
    

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>
    
    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
    
    

    <!-- Echo all executed SQL to stdout ,true表示能看到自動生成的sql語句是什麼樣子的-->
    <property name="show_sql">true</property>
    
    <!-- true表示將自動生成出來的sql語句自動分行,在sql語句多的時候用處很大,容易看 -->
    <property name="format_sql">true</property>

    <!-- Drop and re-create the database schema on startup,update表示在每次啟動web專案時如果表結構有變化則自動更新資料庫,
    沒變化則保持現狀,create則是將所有的表重新建立,之前的表結構會刪除掉 -->
    <property name="hbm2ddl.auto">update</property>
    
    <!-- 在用註解的時候用這種 -->
     <mapping class="com.User"></mapping>
  </session-factory>
</hibernate-configuration>






package com;

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

@Entity//表示這是一個實體類的註解
public class User {
        @Id//設定id為主鍵
 //下面這兩個註釋是對於oracle資料庫是的設定,initialValue是初始值,從什麼地方開始,allocationSize是每次遞增多少,按照自己
        //實際情況定義,sequenceName="sql_user"表示在oracle資料庫中建立名為sql_user的序列號名稱。所以他會從序列中拿出主鍵放到id中
        //但是在實際開發中可以直接只寫上@GeneratedValue,這樣什麼資料庫都支援
        @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_user1")
        @SequenceGenerator(name="seq_user1",initialValue=1,allocationSize=20,sequenceName="seq_user")
        @GeneratedValue//表示id主鍵是遞增的
	    private Long id;
        @Column(name="user_name")//表示這個屬性在資料庫表中是user_name,不寫這個註解的話就預設username
	    private String userName;
	    private String pwd;
	    private String sex;
	    private Integer age;
		public Long getId() {
			return id;
		}
		public void setId(Long id) {
			this.id = id;
		}
		public String getUserName() {
			return userName;
		}
		public void setUserName(String userName) {
			this.userName = userName;
		}
		public String getPwd() {
			return pwd;
		}
		public void setPwd(String pwd) {
			this.pwd = pwd;
		}
		public String getSex() {
			return sex;
		}
		public void setSex(String sex) {
			this.sex = sex;
		}
		public Integer getAge() {
			return age;
		}
		public void setAge(Integer age) {
			this.age = age;
		}
	    
	
}

注意,此時也要在hibernate.cfg.xml中進行對於註解的配置,使得其獲得註解資訊:

<mapping class="com.User">//class是User的路徑

都配置完後,建立一個CreateTable檔案,使其能夠根據User實體類建立一個表:

package test;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CreateTable {

	public static void main(String[] args) {
		//讀取配置檔案hibernate.cfg.xml,hibernate.cfg.xml會讀取User.hbm.xml檔案
		 Configuration cfg=new Configuration().configure();
		 SchemaExport se=new SchemaExport(cfg);
		 se.create(true, true);

	}

}

這樣就可以建立一個表。

如果想要儲存資料到資料庫表中,則

package test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

import com.User;

public class TestSave {

	public static void main(String[] args) {
            //讀取配置檔案hibernate.cfg.xml,hibernate.cfg.xml會讀取User.hbm.xml檔案
		   Configuration cfg=new Configuration().configure();
		   //建立一個註冊類
		   StandardServiceRegistry srb=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties())
				                                                            .build();
		   
		   //建立sessionFactory
		   SessionFactory sessionFactory=cfg.buildSessionFactory(srb);
		   //建立session,因為session封裝的方法是用來操作物件的,這裡將物件儲存到資料庫中,所以也是操作資料庫的
		   Session session=sessionFactory.openSession();
		   //開啟事務
		   session.beginTransaction();
		   //儲存資料到資料庫中
		   User u=new User();
		   u.setAge(20);
           u.setPwd("342");
           u.setUserName("張颯");
           session.save(u);//將資料儲存到資料庫,這裡hibernate會自動建立sql語句。
           //結束事務
           session.getTransaction().commit();
          //關閉事務
           session.close();
	}

}

相關推薦

hibernate基於annotation註解方式建立資料庫以及儲存資料資料庫重要

在這裡建立專案後要把相關jar包與資料庫相關的jar包引入,並且配置好hibernate.cfg.xml檔案,這個專案採用的資料庫名稱是hibernate_anno.再建立一個實體類User,我們用的是註解的方式,所以不用像上篇文章中建立一個實體類的配置檔案,可以直接在實體類

【Python3.6爬蟲學習記錄】爬取教務處成績並儲存到Excel檔案哈工大

前言:基本上每天都會產生一點小想法,在實現的過程中,一步步解決問題,併產生新的想法,就比如,這次是儲存為Excel檔案。這感覺很美妙! 目錄: 一,安裝並簡單使用xlwt 1.1 安裝xlwt 1.2 寫入Excel程式碼 1

Spring使用@AspectJ開發AOP註解方式

自定義 The @aspectj tro 織入 color span for 開啟 前言: AOP並不是Spring框架特有的。Spring只是支持AOP編程 (面向切面編程) 的框架之一。 概念: 1、切面(Aspect)   一系列Advice + Pointcut

RabbitMQ 基本使用註解方式

RabbitMQ 可以採用基於註解的方式來建立佇列,如下: 1. 手動在 RabbitMQ 管理介面建立 myQueue佇列 1. 傳送者程式碼: @Autowired

模組module方式建立maven工程

1、建立maven工程的父工程,其餘模組要繼承這個模組的,一些公共的jar包引用,都寫在這個父工程的pom.xml檔案中,子模組則都可以使用了 再建一個model(longkunkun-api) 下面是建立longkunkun-server的工程 建完

作業系統程序間共享儲存區的通訊建立一個共享儲存區,大小4個位元組int大小建立一個子程序,然後子父程序獨自執行。父程序寫入一個數字到共享儲存區,子程序在共享儲存區把該數字讀出

題目:建立一個共享儲存區,大小4個位元組(int大小)。建立一個子程序,然後子父程序獨自執行。父程序寫入一個數字到共享儲存區,子程序在共享儲存區把該數字讀出。 程式碼量很少,純屬應付作業 筆者在telnet上寫這些程式碼,由於知識技術及英語太菜,不知道怎樣在telnet上覆製出來這些程式碼,

Oracle備份方式主要分三種:資料泵匯出備份oracle10g開始推出、熱備份與冷備份

oracle資料泵備份(Expdp命令)   Oracle備份方式主要分為資料泵匯出備份、熱備份與冷備份三種,今天首先來實踐一下資料泵備份與還原。資料泵匯出/匯入屬於邏輯備份,熱備份與冷備份都屬於物理備份。oracle10g開始推出了資料泵(expdp/impdp),可以使用並行引數選項,因此,

React從入門到架構1--手把手建立、解讀以及開發第一個ReactApp

在開始建立第一個專案之前,我們有一些準備工作要做: 1. 前置工作–安裝軟體 安裝nodejs軟體,官網都有免費的可以下載:nodejs下載地址. 安裝VS Code軟體,不喜歡VS Code的也可以使用sublime Text都可以的,官網可以免費下載安裝:V

CentOS 基本指令——MySQL建立普通使用者 & 連線RSSBus資料庫

CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 使用如下命令對新建使用者賦權: GRANT privileges ON databasename.tablename TO 'username'@'host' 可

ant design pro的採坑之旅 動態建立選單、訪問mock資料、富文字編輯器

       最近公司做一個後臺管理系統,猶豫半天還是想用ant design,後來發現他們有現成的腳手架 ant design pro ( github地址 ),果斷拉程式碼下來執行起來。 一:ant design pro 專案目錄結構和流程 整體目錄大概長這個樣子 

JAVA設計模式01建立型-工廠模式【簡單工廠模式】Simple Factory

     工廠模式是最常用的一類建立型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將要學習的簡單工廠模式是工廠方法模式的“小弟”,它不屬於GoF 23種設計模式,但在軟體開發中應用也較為頻繁,通常將它作為學習其他工廠模式的入門。此

設計模式大雜燴24種設計模式的總結以及學習設計模式的幾點建議

  作者:zuoxiaolong8810(左瀟龍),轉載請註明出處,特別說明:本博文來自博主原部落格,為保證新部落格中博文的完整性,特複製到此留存,如需轉載請註明新部落格地址即可。            迄今為止

利用sqoop將hive資料匯入Oracle踩的坑

教程很多,這裡只說踩過的坑 1.下載sqoop時,還得下一個bin的包,拿到sqoop-1.4.6.jar 的包,放到hadoop的lib目錄下 2.匯入oracle,執行程式碼時,使用者名稱和表名必須大寫!且資料庫建表時表名必須大寫!  示例程式碼: sqoop expo

搭建自己的部落格二十六:增加登入註冊以及個人資料按鈕

1、變化的部分 2、上程式碼: {# 引用模板 #} {% extends 'base.html' %} {% load staticfiles %} {% load comment_tags %} {% load likes_tags %} {% block he

資料預處理備忘特徵選擇,三大降維技術,資料形態處理,模型評估

這一塊的每一個小點都可以引申出很多的東西,所以先做一個大概,用以備忘,持續更新。 *一般過程: (1)資料採集 資料採集是最基本也很耗時間的工作。比如對於具體的工程事件,需要考慮採集哪些型別的資料?需要哪些屬性?需要多少資料支撐?然後再實際去採集這些資料,離線採集?線上獲取? (2)

DOM包括獲取元素節點的方法以及獲取和設定元素節點的屬性

 1.文件:DOM中的“D” 當建立了一個網頁並把它載入到Web瀏覽器中時,DOM就在幕後悄然而生。它把編寫的網頁轉化為一個文件物件。 2.物件:DOM中的“O” 物件是是一種自足的資料集合,與某個特定物件相關聯的變數被稱為這個物件的屬性;只能通過某個特定物件去呼叫的

Node.JS入門——後臺接收頁面引數並儲存資料庫

前言 在學習了nodejs和資料庫mysql互動的情況下,我們來學習一下如何從頁面上獲取引數然後存放到資料庫中,這種方式通常有兩種,一種是get方式,一種是post方式 內容 背景 本篇的主要場景是獲取註冊中的使用者名稱和密碼,然後儲存到資

Mybatis使用註解方式一次插入多條資料

ORACLE 對於oracle資料庫:不需要進行額外設定,可以直接在方法上使用註解進行多表的插入 @Insert("INSERT ALL INTO city (id,name,state) VALUES (31002, 'Disc','DISC') INTO city2

linux 程序、執行緒or子程序、資源佔用檢視以及顯示資料的意義

檢視程序: ps -ef | more  (-e:所有程序,-f:全格式) ++++++++++++++++++++++++++++++++++++ + UID :使用者ID                     + + PID :程序ID                

JPA多條件組合查詢,多關聯查詢,資料條數CriteriaQuery

JPA多條件組合查詢(CriteriaQuery) /**查詢Demo結果集 * @return */ public List<Demo> findDemoList(ParamVO param,Pageable pageabl