diff --git a/src/main/java/org/tonality/model/Subscription.java b/src/main/java/org/tonality/model/Subscription.java
index 56734cebfda4484d2eb2b9cbc5c3330e91a853bd..776313f2b5d5a749f60523e495de76614a58adef 100644
--- a/src/main/java/org/tonality/model/Subscription.java
+++ b/src/main/java/org/tonality/model/Subscription.java
@@ -51,4 +51,84 @@ public class Subscription implements Serializable {
     @Temporal(TemporalType.TIMESTAMP)
     @ColumnDefault("CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP(6)")
     private Date updatedAt;
+
+    @PrePersist
+    public void prePersist() {
+        if (status == null) {
+            status = SubscriptionStatus.PENDING;
+        }
+        updatedAt = new Date();
+    }
+
+    @PreUpdate
+    public void preUpdate() {
+        updatedAt = new Date();
+    }
+
+    public String toString() {
+        return "Subscription: " + subscriptionId + " " + userId + " " + albumId + " " + status;
+    }
+
+    // Test
+    public static void main(String[] args) {
+        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+
+        // Create subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription subscription = new Subscription();
+            subscription.setUserId(1);
+            subscription.setAlbumId(1);
+            session.save(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Get subscription from database
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription lastSubsId =  session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId());
+            System.out.println(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Update subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription firstSubsId =  session.createQuery("from subscription order by subscriptionId asc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, firstSubsId.getSubscriptionId());
+            subscription.setStatus(SubscriptionStatus.ACTIVE);
+            session.update(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+
+        // Delete subscription
+        try {
+            Session session = sessionFactory.openSession();
+            Transaction tx = session.beginTransaction();
+
+            Subscription lastSubsId =  session.createQuery("from subscription order by subscriptionId desc", Subscription.class).setMaxResults(1).list().get(0);
+            Subscription subscription = session.get(Subscription.class, lastSubsId.getSubscriptionId());
+            session.delete(subscription);
+            tx.commit();
+            session.close();
+        } catch (Exception e) {
+            System.out.println("Error: " + e.getMessage());
+        }
+    }
 }