Avatar
1
Vo Thanh Vuong Beginner
Vo Thanh Vuong Beginner
Gen database bằng code java sử dụng các anotation
Khi em làm 1 project nào đó, Em thường tạo bảng bằng cách gen code entity và dùng những annotation @ManyToOne, @OneToMany, @OneToOne. Em không biết là nó có ảnh hưởng tới những cái gì không ạ.
  • Answer
spring
Remain: 5
2 Answers
Avatar
monkey Beginner
monkey Beginner
Cách này chỉ dùng cho test thôi em ạ, chứ trong dự án thật thì không nên dùng, vì sao nhỉ?

  1. Việc tạo bảng còn liên quan đến việc chọn charset, đánh index, như vậy thì nếu tạo bằng code thì chưa chắc đã đủ.
  2. Trong quá trình vận hành thì bảng thay đổi nhiều, ví dụ như thêm cột, thêm index, nhưng có thể không cần phải update code, vậy bây giờ mỗi lần thay đổi lại phải update code thì không hợp lý.
  3. Những annotation kia trong dự án thật (những dự án dữ liệu lớn) thì không dùng được, ví dụ dự án chat em có bảng user liên kết với message (1 user nhiều message) thì em không thể nào select hết toàn bộ message của user được vì số lượng message là rất lớn.
  4. Việc thiết kế db thường làm trước việc thiết kế code, nên từ db rồi gen ra entity sẽ thuận lợi hơn nhiều.
  5. Theo nguyên tắc single repository thì mỗi 1 thành phần nên thực hiện một chức năng, nếu bây giờ em nhồi cả việc tạo bảng cho entity thì nó đã là 2 việc mất rồi.
  • 0
  • Reply
Vậy ví dụ em có 2 bảng Event(id, name,time) và Room(id,name) quan hệ N-N tạo ra bảng phụ EventRoom(id,eventId,roomId) chẳng hạn. Thì trong entity a biểu thị 3 bảng này như nào ạ. Những project nhỏ e thường dùng những anotitaion đó để gen ra nên em cũng k biết những dự án thường làm như nào ạ.  –  Vo Thanh Vuong 1675296613000
Avatar
monkey Beginner
monkey Beginner
Đây em:

class Event{}
class Room{}
class EventRoom{eventId, roomId}
  • 0
  • Reply