1. 程式人生 > 其它 >網際網路通訊協議詳解

網際網路通訊協議詳解

/**
* @Column註解一共有10個屬性,這10個均為可選屬性,各屬性含義分別如下:
* 1.name
* name屬性定義了被標註欄位在資料庫表中所對應欄位的名稱;
* 2.unique
* unique屬性表示該欄位是否為唯一標識,預設為false。如果表中有一個欄位需要唯一標識,
* 則既可以使用該標記,也可以使用@Table標記中的@UniqueConstraint。
* 3.nullable
* nullable屬性表示該欄位是否可以為null值,預設為true。
* 4.insertable
* insertable屬性表示在使用“INSERT”指令碼插入資料時,是否需要插入該欄位的值。
* 5.updatable
* updatable屬性表示在使用“UPDATE”指令碼插入資料時,是否需要更新該欄位的值。insertable
* 和updatable屬性一般多用於只讀的屬性,例如主鍵和外來鍵等。這些欄位的值通常是自動生成的。
* 6.columnDefinition
* columnDefinition屬性表示建立表時,該欄位建立的SQL語句,一般用於通過Entity生成表定義
* 時使用。(也就是說,如果DB中表已經建好,該屬性沒有必要使用。)
* 7.table
* table屬性定義了包含當前欄位的表名。
* 8.length
* length屬性表示欄位的長度,當欄位的型別為varchar時,該屬性才有效,預設為255個字元。
* 9.precision和scale
* precision屬性和scale屬性表示精度,當欄位型別為double時,precision表示數值的總長度,
* scale表示小數點所佔的位數。
*示例一:指定欄位“contact_name”的長度是“512”,並且值不能為null。
* @Column(name="contact_name",nullable=false,length=512)
* private String name;
* 示例二:指定欄位“monthly_income”月收入的型別為double型,精度為12位,小數點位數為2位。
* @Column(name="monthly_income",precision=12, scale=2)
* private BigDecimal getMonthlyIncome;
* 示例三:自定義生成CLOB型別欄位的SQL語句。
* @Column(name=" contact_name ",columnDefinition="clob not null")
* private String name;
*示例四:欄位值為只讀的,不允許插入和修改。通常用於主鍵和外來鍵。
* @Column(name="id",insertable=false,updatable=false)
* private Integer id;
*/

public void generateSql(){
// 建立建表SQL
Map<String, String> settings = new HashMap<>();
settings.put("connection.driver_class", "oracle.jdbc.OracleDriver");
settings.put("dialect", "org.hibernate.dialect.OracleDialect");
settings.put("hibernate.connection.url", "jdbc:oracle:thin:@*:3306:XE");
settings.put("hibernate.connection.username", "*");
settings.put("hibernate.connection.password", "*");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(settings).build();
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
// *************************************
metadataSources.addAnnotatedClass(NewTable.class);
// *************************************
Metadata metadata = metadataSources.buildMetadata();
SchemaExport schemaExport = new SchemaExport();
schemaExport.setFormat(true);
schemaExport.setDelimiter(";");
schemaExport.setOutputFile("create.sql");
schemaExport.createOnly(EnumSet.of(TargetType.SCRIPT), metadata);
}