注解消化

  1. RestController(org.springframework.web.bind.annotation.RestController)
    等價于@Controller+@ResponseBody
  2. Log4j
  • Logger
    The org.slf4j.Logger interface is the main user entry point of SLF4J API.
    It is expected that logging takes place through concrete implementations
    of this interface.
    <h3>Typical usage pattern:</h3>
    <pre>
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    public class Wombat {

    <span style="color:green">final static Logger logger = LoggerFactory.getLogger(Wombat.class);</span>
    Integer t;
    Integer oldT;

    public void setTemperature(Integer temperature) {
    oldT = t;
    t = temperature;
    <span style="color:green">logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);</span>
    if(temperature.intValue() > 50) {
    <span style="color:green">logger.info("Temperature has risen above 50 degrees.");</span>
    }
    }
    }
    </pre>

    Be sure to read the FAQ entry relating to parameterized
    logging
    . Note that logging statements can be parameterized in
    presence of an exception/throwable.

    <p>Once you are comfortable using loggers, i.e. instances of this interface, consider using

  • 所有的log4j的級別,這些級別都相當于一層層的過濾器

Log4J
Levels
TRACE
Level
DEBUG
Level
INFO
Level
WARN
Level
ERROR
Level
FATAL
Level
TRACE
Level
Y Y Y Y Y Y
DEBUG
Level
N Y Y Y Y Y
INFO
Level
N N Y Y Y Y
WARN
Level
N N N Y Y Y
ERROR
Level
N N N N Y Y
FATAL
Level
N N N N N Y
ALL
Level
Y Y Y Y Y Y
OFF
Level
N N N N N N

注:ALL和OFF是1.2.12加上去的

例如1:

log4j.rootLogger=ALL 所有的記錄都可以輸出,相當于沒有過濾
log4j.appender.CONSOLE.Threshold= OFF 所有的記錄都不能輸出,相當于在ALL的基礎上過濾了所有的記錄

例如2:
log4j.rootLogger=TRACE 和ALL一樣,相當于沒有過濾記錄
log4j.appender.CONSOLE.Threshold= INFO 這樣一來輸出了INFO 、WARN、ERROR 和 FATAL的記錄

log機制的詳細解讀 馬克,稍后再看

LoggerFactory

The <code>LoggerFactory</code> is a utility class producing Loggers for
various logging APIs, most notably for log4j, logback and JDK 1.4 logging.
Other implementations such as {@link org.slf4j.impl.NOPLogger NOPLogger} and
{@link org.slf4j.impl.SimpleLogger SimpleLogger} are also supported.
<p/>
<p/>
<code>LoggerFactory</code> is essentially a wrapper around an
{@link ILoggerFactory} instance bound with <code>LoggerFactory</code> at
compile time.
<p/>
<p/>
Please note that all methods in <code>LoggerFactory</code> are static.

tracelevel參數不再注冊表中

  • 原因
    如果安裝了簡單網絡管理協議 (SNMP) 服務但未配置此服務,則會發生此問題。當您重新啟動計算機時,SNMP 服務將這些錯誤事件記錄下來。如果未配置 Evntagnt.dll 文件以在 SNMP 服務啟動時進行調試跟蹤,則這兩個警告事件將被記錄下來。

  • 解決方案
    若要防止這兩個事件的發生,請在下面的注冊表子項中添加 TraceFileName 和 TraceLevel 值:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SNMP_EVENTS\EventLog\Parameters

    • TraceFileName
      類型:REG_SZ
      值:空(空白)
    • TraceLevel
      類型:REG_DWORD
      值:32
      修復程序信息
      Microsoft 現在提供了受支持的修復程序,但此修復程序僅用于解決本文所述的問題。只有系統遇到本文提到的特定問題時才可應用此修復程序。
  • 替代方法
    要解決此問題,請將 SNMP 服務啟動類型配置為“已禁用”。為此,請按照下列步驟操作:

    1. 單擊“開始”,單擊“運行”,在“打開”框中鍵入 services.msc,然后單擊“確定”。
    2. 在服務列表中,雙擊“SNMP Service”。
    3. 在“啟動類型”列表中,單擊“已禁用”,然后單擊“確定”。
      參考資料: http://achilles.blog.sohu.com/1283780.html
  1. @OneToOne

參見JPA總結——實體關系映射

1)Person.Java

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.OneToOne;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    /**
      * 關系維護端Person.java
      */
     @Entity
     @Table(name = "Person")
     public class Person implements Serializable {
        
        private Integer personid;//人員ID
        private String name;// 姓名
        private boolean sex;//性別
        private Short age;//年齡
        private Date birthday;//生日
        private IDCard idcard;//身份證號碼
        @Id
        @GeneratedValue
        public Integer getPersonid() {
           return personid;
        }
        public void setPersonid(Integer personid) {
           this.personid = personid;
        }
        @Column(name = "PersonName", nullable = false, length =   32)
        public String getName() {
           return name;
        }
        public void setName(String name) {
           this.name = name;
        }
        @Column(nullable = false)
        public boolean getSex() {
           return sex;
        }
        public void setSex(boolean sex) {
           this.sex = sex;
        }
        @Column(nullable = false)
        public Short getAge() {
           return age;
        }
        public void setAge(Short age) {
           this.age = age;
        } 
      /*
      * @Temporal主要是用來指明java.util.Date 或java.util.Calendar 類型的屬性具體與數據(date,time,timestamp)三個類型中的那一個進行映射
       */
      @Temporal(value = TemporalType.DATE)
      public Date getBirthday() {
       return birthday;
      }
      public void setBirthday(Date birthday) {
       this.birthday = birthday;
      }
      
      /*
       * @OneToOne注釋指明Person 與IDCard為一對一關系,@OneToOne注釋五個屬性:targetEntity、cascade、fetch、optional 和mappedBy,
     *fetch屬性默認值是FetchType.EAGER。optional = true設置idcard屬性可以為null,也就是允訐沒有身份證,未成年人就是沒有身份證的。
     *
     *targetEntity屬性:Class類型的屬性。定義關系類的類型,默認是該成員屬性對應的類類型,所以通常不需要提供定義。
     *cascade屬性:CascadeType[]類型。該屬性定義類和類之間的級聯關系。定義的級聯關系將被容器視為對當前類對象及其關聯類對象采取相同的操作,
     *而且這種關系是遞歸調用的。cascade的值只能從CascadeType.PERSIST(級聯新建)、CascadeType.REMOVE(級聯刪除)、
     *CascadeType.REFRESH(級聯刷新)、CascadeType.MERGE(級聯更新)中選擇一個或多個。還有一個選擇是使用CascadeType.ALL,表示選擇全部四項。
     *
     *fetch屬性:FetchType類型的屬性。可選擇項包括 :FetchType.EAGER 和FetchType.LAZY。
      *FetchType.EAGER表示關系類(本例是OrderItem類)在主類加載的時候同時加載,FetchType.LAZY表示關系類在被訪問時才加載。默認值是FetchType.LAZY。
    *
    *@OrderBy(value = "id ASC")注釋指明加載元組時按id的升序排序(降序 "DESC")
     */
     @OneToOne(optional = true, cascade = CascadeType.ALL, mappedBy = "person")
      public IDCard getIdcard() {
       return idcard;
      }
      
      public void setIdcard(IDCard idcard) {
       this.idcard = idcard;
      }
     }
  1. IDCard .java

     import java.io.Serializable;
     import javax.persistence.CascadeType;
     import javax.persistence.Column;
     import javax.persistence.Entity;
     import javax.persistence.GeneratedValue;
     import javax.persistence.Id;
     import javax.persistence.JoinColumn;
     import javax.persistence.OneToOne;
     import javax.persistence.Table;
     @Entity
     @Table(name = "IDCard")
     public class IDCard implements Serializable {
      
      private Integer id;//流水號
      private String cardno;//身份證號碼
      private Person person;//對應的人
      public IDCard() {
      }
      public IDCard(String cardno) {
       this.cardno = cardno;
      }
      @Id
      @GeneratedValue
      public Integer getId() {
       return id;
      }
      public void setId(Integer id) {
       this.id = id;
      }
      @Column(nullable = false, length = 18, unique = true)
      public String getCardno() {
       return cardno;
      }
      public void setCardno(String cardno) {
       this.cardno = cardno;
      }
    
      /**
       * @OneToOne注釋指明IDCard與Person為一對一關系,
       * IDCard是關系被維護端,optional = false設置person屬性值不能為null,
       * 也就是身份證必須有對應的主人。
       * @JoinColumn(name = "Person_ID", referencedColumnName ="personid",unique = true)
       * 指明IDCard對應表的Person_ID列作為外鍵與
       * Person對應表的personid列進行關聯,unique= true 指明Person_ID 列的值不可重復。
       * @return
       */
      @OneToOne(optional = false, cascade = CascadeType.REFRESH)
      @JoinColumn(name = "Person_ID", referencedColumnName = "personid", unique = true)
      public Person getPerson() {
       return person;
      }
      public void setPerson(Person person) {
       this.person = person;
      }
     }
    

    @OneToOne

    @OneToOne注釋指明PersonIDCard為一對一關系,@OneToOne注釋五個屬性:targetEntitycascadefetchoptionalmappedBy
    optional = true設置idcard屬性可以為null,也就是允訐沒有身份證,未成年人就是沒有身份證的。
    targetEntity屬性:Class類型的屬性。定義關系類的類型,默認是該成員屬性對應的類類型,所以通常不需要提供定義。
    cascade屬性:CascadeType[]類型。該屬性定義類和類之間的級聯關系。定義的級聯關系將被容器視為對當前類對象及其關聯類對象采取相同的操作,而且這種關系是遞歸調用的。cascade的值只能從CascadeType.PERSIST(級聯新建)、CascadeType.REMOVE(級聯刪除)、CascadeType.REFRESH(級聯刷新)、CascadeType.MERGE(級聯更新)中選擇一個或多個。還有一個選擇是使用CascadeType.ALL,表示選擇全部四項。
    fetch屬性:FetchType類型的屬性。可選擇項包括:FetchType.EAGERFetchType.LAZYFetchType.EAGER表示關系類(本例是OrderItem類)在主類加載的時候同時加載,FetchType.LAZY表示關系類在被訪問時才加載。默認值是FetchType.LAZY

          @OrderBy(value = "id ASC")注釋指明加載元組時按id的升序排序(降序 "DESC")
         Person.class
          @OneToOne(optional = true, cascade = CascadeType.ALL, mappedBy = "person")
          public IDCard getIdcard() {
           return idcard;
          }
          public void setIdcard(IDCard idcard) {
           this.idcard = idcard;
          }
    

ManyToMany

文章多對多關系

servlet3.0 新特性

Servlet3.0 新特性詳解

Configuration注解

Spring知識大全

JPA 整合Hibernate

JPA

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容

  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,072評論 1 13
  • 在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析...
    時待吾閱讀 5,010評論 0 6
  • 寫Java也有一段時間了,一直都有用slf4j log4j輸出日志的習慣。但是始終都是抱著“拿來主義”的態度,復制...
    Minimumy閱讀 1,401評論 1 7
  • 一、Log4j簡介 Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layo...
    默默守護閱讀 1,922評論 2 8
  • 沒有數據庫支持的程序都是耍流氓 安裝mysql驅動 在下面的網址下載mysqldb模塊:http://source...
    上進青年歡樂多閱讀 1,302評論 0 3