12/08/2018, 12:14

Spring 4 +Hibernate(p1)

Đối với các dự án, việc thiết kế và viết mã để build database mất khá nhiều thời gian. Và việc update cấu trúc khiến cho người lập trình gặp nhiều trouble. Một tiện ích tuyệt với cho các lkv java , từ hibernate 3 trở đi, hibernate cung cấp cho phép dev tạo ra các entity cho databse và quản lý cấu ...

Đối với các dự án, việc thiết kế và viết mã để build database mất khá nhiều thời gian. Và việc update cấu trúc khiến cho người lập trình gặp nhiều trouble.
Một tiện ích tuyệt với cho các lkv java , từ hibernate 3 trở đi, hibernate cung cấp cho phép dev tạo ra các entity cho databse và quản lý cấu trúc database của mình từ các entity đó, sử dụng các annotations đúng vị trí . Bạn hoàn toàn không phải thực hiện các thao tác tạo các scrip sql cũng như update database khi có sự thay đổi.
Điều duy nhất bạn cần làm đó quản lý lớp entity của mình . Hibernate sẽ thực hiện các công việc create , update database schema.
1.Update databse schema của bạn:
Việc cài đặt để hibernate create or update database của bạn hết sức dễ dàng, tất cả những điều bạn cần là cài đặt thuộc tính hibernate.hbm2đl.auto property :

<hibernate-configuration>
   <session-factory>
      <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
      <property name="hibernate.hbm2ddl.auto">create-drop</property>
      ...

   </session-factory>
</hibernate-configuration>

Việc cấu hình property "create-drop sẽ tạo ra 1 database mới mỗi lần bạn start ứng dụng của mình, thận trọng trong việc sử dụng mode này. Toàn bộ dữ liệu trong database của bạn sẽ bị xóa sạch khi bạn start ứng dụng với mode này.
Nếu bạn set giá trị cho thuộc tính này là update , hibernate sẽ tạo database mới nếu nó chưa tồn tại và nó sẽ update lên databse đó nếu có một vài thay đổi từ entity của bạn.
Mặc định hibernate sẽ generate các bảng và các fields giống giống với tên của entity và các field bạn đặt.

public class Client implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String firstName;

    private String lastName;
    ...
}

Đối với class này, hibernate sẽ sinh ra đoạn mã tương ứng trong database của bạn , dưới đây là đoạn mã hibernate generate:

create table Client (
        id bigint generated by default as identity (start with 1),
        firstName varchar(255),
        lastName varchar(255),
        ...
        primary key (id)
    );

Đến thời điểm này . mọi việc diễn ra rất tuyệt vời, việc quản lý code bạn đã nhẹ nhàng đi rất nhiều. Nhưng câu hỏi lúc này đặt ra với naming conventions - làm thế nào chúng ta có thể custom lại các tên table or tên cloumn , không sử dụng generate default của hibernate. Để thực hiện custom, đơn giản bạn chỉ cần sử dụng thuộc tính name cho các Entity và column bạn muốn quản lý naming convertion.

@Entity(name="T_CLIENT")
public class Client implements Serializable {
    ...
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="CLIENT_ID")
    private Long id;

    @Column(name="FIRST_NAME")
    private String firstName;

    @Column(name="LAST_NAME")
    private String lastName;
    ...
}

Cool. Chúng ta đã có thể giải quyết được vấn đề về naming convertion, cấu trúc schema nhìn đã "pro" hơn rồi.             </div>
            
            <div class=

0