GORM features such as hooks, soft deletes, custom data types in golang