change from lazy=True to joined

here is the docs from sqlalchemy:
http://docs.sqlalchemy.org/en/latest/orm/loading.html

since most objects are pretty small, it's more beneficial to use joined instead of issuing a bunch of query afterward. and also since foreign key is not null, we can use inner join