java里的常用注解

*注釋和注解的區(qū)別:注解是寫給機器川蒙、編譯器看的择卦;注釋是寫給人看的衫仑。


Hiberanate常用注解

Hibernate是一種ORM框架吼旧,全稱為 Object_Relative DateBase-Mapping凰锡,在Java對象與關系數(shù)據(jù)庫之間建立某種映射,以實現(xiàn)直接存取Java對象圈暗。


持久化類常用注解

注: - 所謂的持久化類其實本質(zhì)上也就是一個普通的Java類掂为,只不過我們通過配置文件讓它與數(shù)據(jù)庫中的某張表形成對應關系。
?? - GeneratedValue指定了標識符的生成策略员串。jpa提供了4種標準用法勇哗。

IDENTITY    //采用數(shù)據(jù)庫ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式寸齐; 
AUTO        //JPA自動選擇合適的策略欲诺,是默認選項; 
SEQUENCE    //通過序列產(chǎn)生主鍵渺鹦,通過@SequenceGenerator 注解指定序列名扰法,MySql不支持這種方式 
TABLE       //通過表產(chǎn)生主鍵,框架借由表模擬序列產(chǎn)生主鍵毅厚,使用該策略可以使應用更易于數(shù)據(jù)庫移植塞颁。
  • @Entity:
    ?? 表明該類 (UserEntity) 為一個實體類,它默認對應數(shù)據(jù)庫中的表名是user_entity卧斟。查看@Entity注解殴边,發(fā)現(xiàn)其只有一個屬性name,表示其所對應的數(shù)據(jù)庫中的表名珍语。這里也可以寫成
         @Entity(name = "xwj_user")
      或者
         @Entity
         @Table(name = "xwj_user", schema = "test")
  • @Table
    ??當實體類與其映射的數(shù)據(jù)庫表名不同名時需要使用 @Table注解說明锤岸,該標注與 @Entity 注解并列使用,置于實體類聲明語句之前板乙,可寫于單獨語句行是偷,也可與聲明語句同行。
     @Table注解的常用選項是 name募逞,用于指明數(shù)據(jù)庫的表名 
    @Table注解還有兩個選項 catalog 和 schema 用于設置
           表所屬的數(shù)據(jù)庫目錄或模式蛋铆,通常為數(shù)據(jù)庫名。
           使用@UniqueConstraints 可以定義表的唯一約束放接。
@Table(name="tbl_sky",
  uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})})//聯(lián)合約束
@Table(name="tbl_sky",
  uniqueConstraints = {@UniqueConstraint(columnNames="month")})//單一約束

??如果缺省@Table注解刺啦,則class字段名即表中的字段名,所以需要@Column注解來改變class中字段名與db中表的字段名的映射規(guī)則纠脾。

  • @Column
    ??@Column注釋定義了將成員屬性映射到關系表中的哪一列和該列的結(jié)構(gòu)信息玛瘸,屬性如下:
  1)name:映射的列名蜕青。如:映射tbl_user表的name列,可以在name屬性的上面或getName方法上面加入糊渊;
  2)unique:是否唯一右核;
  3)nullable:是否允許為空;
  4)length:對于字符型列渺绒,length屬性指定列的最大字符長度贺喝;
  5)insertable:是否允許插入;
  6)updatetable:是否允許更新宗兼;
  7)columnDefinition:定義建表時創(chuàng)建此列的DDL躏鱼;
  8)secondaryTable:從表名。如果此列不建在主表上(默認是主表)殷绍,該屬性定義該列所在從表的名字

如果是主鍵id挠他,還會用到@Id注解,如下:

@Id注釋指定表的主鍵,它可以有多種生成方式:
  1)TABLE:容器指定用底層的數(shù)據(jù)表確保唯一篡帕;
  2)SEQUENCE:使用數(shù)據(jù)庫德SEQUENCE列來保證唯一(Oracle數(shù)據(jù)庫通過序列來生成唯一ID);
  3)IDENTITY:使用數(shù)據(jù)庫的IDENTITY列來保證唯一贸呢;
  4)AUTO:由容器挑選一個合適的方式來保證唯一镰烧;
  5)NONE:容器不負責主鍵的生成,由程序來完成楞陷。

lombok常用注解

  • @Data
    ??@Data使用時需下載lombok插件怔鳖,為lombok注解的一種,幫助我們簡化了代碼,相當于lombok里的@Getter/@Setter固蛾,@ToString/@EqualsAndHashCode
  • @Log
    ??根據(jù)不同的注解生成不同類型的log對象结执,但是實例名稱都是log,有六種可選實現(xiàn)類
  @CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
  @Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
  @Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
  @Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
  @Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
  @XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
  • @Synchronized
    ??這個注解用在類方法或者實例方法上艾凯,效果和synchronized關鍵字相同献幔,區(qū)別在于鎖對象不同,對于類方法和實例方法趾诗,synchronized關鍵字的鎖對象分別是類的class對象和this對象蜡感,而@Synchronized得鎖對象分別是私有靜態(tài)final對象LOCK和私有final對象LOCK和私有final對象lock,當然恃泪,也可以自己指定鎖對象郑兴。
    ??synchronized關鍵字可用來給對象和方法或者代碼塊加鎖,當它鎖定一個方法或者一個代碼塊的時候贝乎,同一時刻最多只有一個線程執(zhí)行這段代碼情连。當兩個并發(fā)線程訪問同一個對象object中的這個加鎖同步代碼塊時览效,一個時間內(nèi)只能有一個線程得到執(zhí)行却舀。另一個線程必須等待當前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊虫几。然而,當一個線程訪問object的一個加鎖代碼塊時禁筏,另一個線程仍可以訪問該object中的非加鎖代碼塊持钉。

  • @Override
    ??在java中如果方法上加@Override的注解的話,表示子類重寫了父類的方法篱昔。當然也可以不寫每强,寫的好處是:
    ????1. 可讀性提高。
    ????2. 編譯器會校驗寫的方法在父類中是否存在州刽。
public class Father {
    public void test(){
        System.out.println("test");
    }   
    class child extends Father{
        @Override
        public void test(){
        }   }
}

??如果將test寫成test1的話空执,編譯器在父類中未找到此方法,將會報錯;如果將@override注釋去掉的話穗椅,那么編譯器則會認為創(chuàng)建了新的方法

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辨绊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匹表,更是在濱河造成了極大的恐慌门坷,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袍镀,死亡現(xiàn)場離奇詭異默蚌,居然都是意外死亡,警方通過查閱死者的電腦和手機苇羡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門绸吸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人设江,你說我怎么就攤上這事锦茁。” “怎么了叉存?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵码俩,是天一觀的道長。 經(jīng)常有香客問我歼捏,道長握玛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任甫菠,我火速辦了婚禮挠铲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寂诱。我一直安慰自己拂苹,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓢棒,像睡著了一般浴韭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脯宿,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天念颈,我揣著相機與錄音,去河邊找鬼连霉。 笑死榴芳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的跺撼。 我是一名探鬼主播窟感,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歉井!你這毒婦竟也來了柿祈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤哩至,失蹤者是張志新(化名)和其女友劉穎躏嚎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菩貌,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡紧索,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了菜谣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡晚缩,死狀恐怖尾膊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荞彼,我是刑警寧澤冈敛,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站鸣皂,受9級特大地震影響抓谴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寞缝,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一癌压、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荆陆,春花似錦滩届、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棠枉。三九已至,卻和暖如春泡挺,著一層夾襖步出監(jiān)牢的瞬間辈讶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工娄猫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贱除,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓稚新,卻偏偏與公主長得像勘伺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子褂删,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 在一個方法內(nèi)部定義的變量都存儲在棧中飞醉,當這個函數(shù)運行結(jié)束后,其對應的棧就會被回收屯阀,此時缅帘,在其方法體中定義的變量將不...
    Y了個J閱讀 4,413評論 1 14
  • 進程和線程 進程 所有運行中的任務通常對應一個進程,當一個程序進入內(nèi)存運行時,即變成一個進程.進程是處于運行過程中...
    勝浩_ae28閱讀 5,089評論 0 23
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,076評論 0 14
  • 接口/抽象類意義規(guī)范难衰、擴展钦无、回調(diào)為其子類提供一個公共的類型 封裝子類中得重復內(nèi)容 定義抽象方法,子類雖然有不同的實...
    MigrationUK閱讀 2,163評論 1 28