Khi cấu hình Data source sử dụng EclipseLink, chúng ta nên thêm vào thuộc tính eclipselink.target-database hoặc hibernate.dialect nếu sử dụng Hibernate

Q: Nếu không thực hiện việc cấu hình dialect này thì sao ?

A: Các hoạt động logic có thể sai, thiếu các tham số cấu hình có thể dẫn đến chương trình hoạt động không đúng.

Nguyên nhân sâu xa

Về cơ bản Dialect có nghĩa là “các biến thể của một ngôn ngữ”. Như ta đã biết Eclipselink hoặc Hibernate có thể làm việc được với nhiều loại cơ sở dữ liệu. Tuy nhiên, các loại cơ sở dữ liệu khác nhau thì chúng cũng có những phần mở rộng, các phiên bản hoặc các ràng buộc khác nhau nên buộc ông sử dụng nó phải tuân theo những quy định riêng độc quyền này. Chính vì lý do có khả năng mở rộng lớn như vậy, nên ta phải chỉ cho những ông này biết cơ sở dữ liệu mục đích là thằng nào.

Như vậy, Hibernate và Eclipselink sử dụng dialect để biết được, nó đang sử dụng cái nào và có thể chuyển đổi các lệnh truy vấn tương ứng phù hợp nhất.

Giải pháp thực hiện

Việc chỉ ra cho Eclipselink và Hibernate biết đang sử dụng CSDL nào, chúng ta chỉ việc thêm 1 trong 2 đoạn mã sau đây vào trong file persistence.xml, ví dụ chỉ rõ đang sử dụng CSDL MySQL thì cấu hình như sau:

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
            <property name="eclipselink.target-database" value="MySQL"></property>
        </properties>

Liên kết tham khảo

About The Author