Models4:39 with Craig Dennis
A great place to start when architecting an API is the model. Let's build out what we will be using.
Well, it is that time again. 0:00 It is time to define our model. 0:01 So we know we will have a course model object, and 0:03 we also know we will have a review model object. 0:06 Now each course will possibly have many reviews. 0:09 Now you might recognize this type of model relationship as one to many. 0:13 One course, many reviews. 0:17 Let's do some modeling. 0:19 Okay so let's make a new IntelliJ project and let's make it Gradle based. 0:22 So I'm gonna click Create New Project and 0:25 I'm gonna make sure that Gradle is checked over here. 0:28 And I'm gonna click Next. 0:31 And for the Group ID, let's make that com.teamtreehouse.courses. 0:34 And for the artifact we will call this course reviews. 0:39 Right, we're writing reviews for courses. 0:42 Click next. 0:44 We're going to go ahead and make sure that we check the create directories for 0:45 empty content routes automatically. 0:48 I’m going to click next. 0:49 And we will keep it in the same place in the home directory. 0:52 Click finish. 0:55 Okay, not let's create our model object. 0:58 So if you open up over here under the source directory main Java, 1:00 we'll right click. 1:04 Choose New, Java Class. 1:05 Then we wanna blow that all the way out. 1:07 We wanna say com.teamtreehouse.courses.model and 1:09 first we'll build a thing called Course in the model package. 1:15 Okay, so our database that we're going to eventually use is going to use an internal 1:20 identifier for a primary key. 1:24 But this is common amongst just about every one of these things. 1:26 So we're gonna make a thing here called id. 1:30 And this is common practice, it's either a long or an integer. 1:31 So we'll make an id, and, what else will a course have? 1:35 A course will have a name. 1:38 We'll also have a URL, right? 1:41 So, it'll be the name of the course and the URL of where to find it. 1:44 All right. So let's go ahead and 1:47 generate our constructor. 1:49 So I'm going to go Code Generate and again that's Command N on a Mac 1:51 and we are going to generate a Constructor. 1:58 And for now let's just leave the ID out. 2:03 Right. We can just make a new course with name in 2:04 url, because it's an integer it will just be zero until it get's set properly. 2:06 Okay and then let's go ahead and let's add our getter's and our setters So, 2:11 we'll generate getters, and setters, and we will generate for all of them. 2:14 That's fine. 2:20 And, let;s go ahead, and while we're here, let's also do the equals, and hash code. 2:21 Might as well, right? 2:25 It's gonna write the code for us, might as well let it. 2:26 So, we're just gonna use the IntelliJ default. 2:28 We will use all of those. 2:31 Those are all expected in the fields that are non null. 2:33 They're both not null right? 2:38 We should always have those. 2:39 Okay, and now very similarly, let's make our review object. 2:43 So we'll do new, Java Class and we're in that same model directory, model. 2:46 And we'll say review and again this will also have an id. 2:52 So I'll do private int id. 2:56 And for now, lets just store the parent courses id. 2:59 You know you never want to go over board unless you end up needing it. 3:03 Like we could actually put a course in here, but for now, 3:06 let's just stick with the id. 3:09 That's what we're going to do, right? 3:10 We're just going to use this id. 3:12 So remember, keep it simple, smarty pants, K-I-S-S. 3:13 All right. 3:18 So it's private int, and it's a course id. 3:18 And that's going to refer to the course that we are writing a review about. 3:22 So we've got a rating. 3:25 And we also have a comment here. 3:28 Okay and very similarly lets go ahead and lets do our generating. 3:33 We'll generate a constructor. 3:37 Lets make the course id required, but not the id itself. 3:39 We'll let the dao objects take care of that later here in a bit. 3:42 So and now we will make getters and setters. 3:46 Lets get for all of them. 3:50 And also let's make the equals in hash code when we're in here just to play nice. 3:52 Okay those should all be included, 3:58 all those should be included the non null field. 4:01 Yeah comments could probably be null. 4:05 All right. 4:07 So now you can see that the review has a reference to the course id 4:09 simply by the way of the id. 4:13 Now, we have made it required for creation. 4:15 You can't create a review without having a course id. 4:19 All right, so we just created our plain, old Java objects, and now, 4:22 we need to create a way to serialize those. 4:26 I had mentioned that we are going to be using Sequel, and more specifically, 4:28 we'll embrace the classical design pattern of data access objects, or dao. 4:31 Let's get that all ready to rock right after this quick break. 4:36
You need to sign up for Treehouse in order to download course files.Sign up